Joburgess 5 gadi atpakaļ
vecāks
revīzija
6cf076336b

+ 2 - 1
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExamRegistrationDao.java

@@ -176,7 +176,8 @@ public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
      * @param examId:
      * @return java.util.List<com.keao.edu.user.entity.ExamRegistration>
      */
-    List<ExamRegistration> getNotInRoomStudents(@Param("examId") Long examId);
+    List<ExamRegistration> getNotInRoomStudents(@Param("examId") Long examId,
+                                                @Param("organIds") List<Integer> organIds);
 
     /**
      * @describe 统计合作单位的招生人数

+ 4 - 2
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/dao/ExamRoomDao.java

@@ -78,7 +78,8 @@ public interface ExamRoomDao extends BaseDAO<Long, ExamRoom> {
      * @return java.util.List<com.keao.edu.user.api.entity.ExamRoom>
      */
     List<ExamRoom> getWithExamAndSubjects(@Param("examId") Long examId,
-                                          @Param("subjectIds") List<Integer> subjectIds);
+                                          @Param("subjectIds") List<Integer> subjectIds,
+                                          @Param("organIds") List<Integer> organIds);
 
     int updateSL(ExamRoom examRoom);
 
@@ -128,7 +129,8 @@ public interface ExamRoomDao extends BaseDAO<Long, ExamRoom> {
      * @param examId:
      * @return int
      */
-    int countSendExamPlanRooms(@Param("examId") Long examId);
+    int countSendExamPlanRooms(@Param("examId") Long examId,
+                               @Param("organIds") List<Integer> organIds);
 
     /**
      * @describe 统计指定项目中教师所在考场数量

+ 6 - 3
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExamRoomStudentRelationServiceImpl.java

@@ -250,19 +250,22 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		if(Objects.isNull(examinationBasic)){
 			throw new BizException("考级项目不存在");
 		}
-		int sendExamPlanRooms = examRoomDao.countSendExamPlanRooms(examId);
+
+		List<Integer> childOrganIds = organizationService.getChildOrganIds(selfOrganId, true);
+
+		int sendExamPlanRooms = examRoomDao.countSendExamPlanRooms(examId, childOrganIds);
 		if(sendExamPlanRooms>0){
 			throw new BizException("已发送考试安排,请手动处理未排考学员");
 		}
 		//未排考学员
-		List<ExamRegistration> notInRoomStudents = examRegistrationDao.getNotInRoomStudents(examId);
+		List<ExamRegistration> notInRoomStudents = examRegistrationDao.getNotInRoomStudents(examId, childOrganIds);
 		if(CollectionUtils.isEmpty(notInRoomStudents)){
 			throw new BizException("所有学员都已安排考场");
 		}
 		Map<Integer, List<ExamRegistration>> subjectRegistMap = notInRoomStudents.stream().collect(Collectors.groupingBy(ExamRegistration::getSubjectId));
 		Set<Integer> subjectIds = subjectRegistMap.keySet();
 		//未排考学员可排考考场
-		List<ExamRoom> examRooms = examRoomDao.getWithExamAndSubjects(examId, new ArrayList<>(subjectIds));
+		List<ExamRoom> examRooms = examRoomDao.getWithExamAndSubjects(examId, new ArrayList<>(subjectIds), childOrganIds);
 		if(CollectionUtils.isEmpty(examRooms)){
 			throw new BizException("请先建立考场");
 		}

+ 1 - 1
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java

@@ -261,7 +261,7 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
     @Override
     public PageInfo<ExaminationBasicDto> findExaminationBasics(ExaminationQueryInfo queryInfo) {
         PageInfo<ExaminationBasicDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        Map<String, Object> params = new HashMap<String, Object>();
+        Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
         List<Integer> childOrganIds = organizationService.getChildOrganIds(queryInfo.getOrganId(), true);

+ 6 - 0
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRegistrationMapper.xml

@@ -645,6 +645,12 @@
 			examination_basic_id_ = #{examId}
 			AND er.status_ IN ('AUDIT_PASS', 'AUDIT_WAIT')
 			AND NOT EXISTS ( SELECT id_ FROM exam_room_student_relation WHERE examination_basic_id_ = #{examId} AND er.id_ = exam_registration_id_ )
+			<if test="organIds!=null">
+				AND er.organ_id_ IN
+				<foreach collection="organIds" item="organId" separator="," open="(" close=")">
+					#{organId}
+				</foreach>
+			</if>
 	</select>
 
     <select id="getOrganExamRegistStatistics" resultType="com.keao.edu.user.dto.OrganExamRegistStatisticsDto">

+ 17 - 3
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRoomMapper.xml

@@ -245,9 +245,9 @@
     <update id="updateExamRoomStudentNum">
 		UPDATE exam_room er
 		LEFT JOIN ( SELECT exam_room_id_, COUNT( exam_registration_id_ ) stu_num_ FROM exam_room_student_relation WHERE examination_basic_id_ = #{examId} GROUP BY exam_room_id_ ) ers ON er.id_ = ers.exam_room_id_
-		SET er.exam_room_student_num_ = ers.stu_num_
+		SET er.exam_room_student_num_ = CASE WHEN ers.stu_num_ IS NULL THEN 0 ELSE ers.stu_num_ END
 		WHERE
-			er.examination_basic_id_ = #{examId}
+			er.examination_basic_id_ = #{examId} AND er.id_ = ers.exam_room_id_
 	</update>
 
     <!-- 根据主键删除一条记录 -->
@@ -447,7 +447,15 @@
 	</select>
 
     <select id="countSendExamPlanRooms" resultType="int">
-		SELECT COUNT(id_) FROM exam_room WHERE examination_basic_id_=#{examId} AND exam_plan_push_flag_=1
+		SELECT COUNT(id_) FROM exam_room
+		WHERE examination_basic_id_=#{examId}
+		AND exam_plan_push_flag_=1
+		<if test="organIds!=null">
+			AND organ_id_ IN
+			<foreach collection="organIds" item="organId" separator="," open="(" close=")">
+				#{organId}
+			</foreach>
+		</if>
 	</select>
 
 	<select id="getWithExamAndSubjects" resultMap="ExamRoom">
@@ -457,6 +465,12 @@
 		<foreach collection="subjectIds" item="subjectId" separator="," open="(" close=")">
 			#{subjectId}
 		</foreach>
+		<if test="organIds!=null">
+			AND organ_id_ IN
+			<foreach collection="organIds" item="organId" separator="," open="(" close=")">
+				#{organId}
+			</foreach>
+		</if>
 	</select>
 
     <select id="countTeacherRooms" resultType="int">