Procházet zdrojové kódy

Merge branch 'master' of http://git.dayaedu.com/yonge/edu-saas

zouxuan před 5 roky
rodič
revize
c80c660452

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

@@ -19,6 +19,30 @@ public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
     int batchUpdate(@Param("regists") List<ExamRegistration> regists);
 
     /**
+     * @describe 更新指定考级项目下所有待审核报名学员的状态
+     * @author Joburgess
+     * @date 2020.08.21
+     * @param examId:
+     * @param status:
+     * @param memo:
+     * @return int
+     */
+    int updateRegistStatusByExam(@Param("examId") Long examId,
+                                 @Param("status") StudentRegistrationStatusEnum status,
+                                 @Param("memo") String memo);
+
+    /**
+     * @describe 统计指定考级项目下指定状态的报名学员数量
+     * @author Joburgess
+     * @date 2020.08.21
+     * @param examId:
+     * @param status:
+     * @return int
+     */
+    int countStudentNumWithStatusAndExam(@Param("examId") Long examId,
+                                         @Param("status") StudentRegistrationStatusEnum status);
+
+    /**
      * @param organIds:
      * @return int
      * @describe 统计无教室学员
@@ -47,7 +71,7 @@ public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
      * @author Joburgess
      * @date 2020.06.30
      */
-    int countTotalRegistrationStudentNumWithExam(@Param("organIds") List<Integer> organIds,
+    int countTotalAuditPassRegistrationStudentNumWithExam(@Param("organIds") List<Integer> organIds,
                                                  @Param("examId") Long examId);
 
     /**

+ 12 - 0
edu-user/edu-user-biz/src/main/java/com/keao/edu/user/service/ExamRegistrationService.java

@@ -1,6 +1,7 @@
 package com.keao.edu.user.service;
 
 
+import com.keao.edu.common.entity.HttpResponseResult;
 import com.keao.edu.common.page.PageInfo;
 import com.keao.edu.common.page.QueryInfo;
 import com.keao.edu.common.service.BaseService;
@@ -38,6 +39,17 @@ public interface ExamRegistrationService extends BaseService<Long, ExamRegistrat
    void updateExamRegistrationStatus(Long registId, StudentRegistrationStatusEnum status, String memo);
 
    /**
+    * @describe 更新考级项目中所有待审核学员状态
+    * @author Joburgess
+    * @date 2020.08.21
+    * @param examId:
+    * @param status:
+    * @param memo:
+    * @return void
+    */
+   HttpResponseResult updateExamAllRegistStatus(Long examId, StudentRegistrationStatusEnum status, String memo);
+
+   /**
     * @describe 更新考级报名信息
     * @author Joburgess
     * @date 2020.07.24

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

@@ -3,7 +3,9 @@ package com.keao.edu.user.service.impl;
 
 import com.keao.edu.auth.api.client.SysUserFeignService;
 import com.keao.edu.auth.api.entity.SysUser;
+import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.common.dal.BaseDAO;
+import com.keao.edu.common.entity.HttpResponseResult;
 import com.keao.edu.common.entity.SysConfig;
 import com.keao.edu.common.enums.MessageTypeEnum;
 import com.keao.edu.common.exception.BizException;
@@ -304,7 +306,7 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
             throw new BizException("学员报名信息不存在");
         }
         if (!StudentRegistrationStatusEnum.AUDIT_WAIT.equals(er.getStatus())) {
-            throw new BizException("审核状态错误");
+            throw new BizException("此学员已审核");
         }
         if (!StudentRegistrationStatusEnum.AUDIT_PASS.equals(status)
                 && !StudentRegistrationStatusEnum.AUDIT_REJECT.equals(status)) {
@@ -339,6 +341,31 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
     }
 
     @Override
+    public HttpResponseResult updateExamAllRegistStatus(Long examId, StudentRegistrationStatusEnum status, String memo) {
+        if (Objects.isNull(examId)) {
+            throw new BizException("请指定考级项目");
+        }
+        ExaminationBasic examinationBasic = examinationBasicDao.get(examId);
+        if(Objects.isNull(examinationBasic)){
+            throw new BizException("考级项目不存在");
+        }
+        if(ExamStatusEnum.RESULT_CONFIRM.equals(examinationBasic)){
+            throw new BizException("考级项目结果以确定");
+        }
+        if (!StudentRegistrationStatusEnum.AUDIT_PASS.equals(status)
+                && !StudentRegistrationStatusEnum.AUDIT_REJECT.equals(status)) {
+            throw new BizException("审核状态错误");
+        }
+        int i = examRegistrationDao.updateRegistStatusByExam(examId, status, memo);
+        if(i>0){
+            return BaseController.succeedMsg("审核成功");
+        }else{
+            return BaseController.failed("暂无待审核学员");
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public void updateExamRegistration(ExamRegistration examRegistration) {
         if (Objects.isNull(examRegistration.getId())) {
             throw new BizException("学员报名信息有误");
@@ -347,6 +374,13 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         if (Objects.isNull(er)) {
             throw new BizException("学员报名信息有误");
         }
+        ExaminationBasic examinationBasic = examinationBasicDao.lockExam(er.getExaminationBasicId());
+        if(Objects.isNull(examinationBasic)){
+            throw new BizException("考级信息错误");
+        }
+        if(ExamStatusEnum.RESULT_CONFIRM.equals(examinationBasic.getStatus())){
+            throw new BizException("本次考级已结束");
+        }
         if (er.getStudentId().equals(examRegistration.getStudentId())) {
             examRegistration.setStatus(StudentRegistrationStatusEnum.AUDIT_WAIT);
         } else {

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

@@ -681,7 +681,7 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 
         List<Integer> childOrganIds = organizationService.getChildOrganIds(organId, true);
 
-		examRoomStatisticsInfo.setTotalRegistrationStudentNum(examRegistrationDao.countTotalRegistrationStudentNumWithExam(childOrganIds, examId));
+		examRoomStatisticsInfo.setTotalRegistrationStudentNum(examRegistrationDao.countTotalAuditPassRegistrationStudentNumWithExam(childOrganIds, examId));
 		examRoomStatisticsInfo.setInRoomStudentNum(examRegistrationDao.countInExamRoomStudentNum(childOrganIds, examId));
 
 		List<ExamRoom> examRooms = examRoomDao.getWithExam(childOrganIds, examId);

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

@@ -17,6 +17,7 @@ import com.keao.edu.user.dto.ExamStatisticsDto;
 import com.keao.edu.user.dto.ExaminationBasicDto;
 import com.keao.edu.user.entity.*;
 import com.keao.edu.user.enums.ExamStatusEnum;
+import com.keao.edu.user.enums.StudentRegistrationStatusEnum;
 import com.keao.edu.user.page.ExaminationQueryInfo;
 import com.keao.edu.user.service.*;
 import com.keao.edu.util.collection.MapUtil;
@@ -67,6 +68,8 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
     @Autowired
     private ExamRegistrationPaymentDao examRegistrationPaymentDao;
     @Autowired
+    private ExamRegistrationDao examRegistrationDao;
+    @Autowired
     private ExamManualLedgerDao examManualLedgerDao;
     @Autowired
     private ExamTeacherSalaryService examTeacherSalaryService;
@@ -206,7 +209,7 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public void updateExamBasicStatus(Long examId, ExamStatusEnum statusEnum, Integer operatorId) {
         if(Objects.isNull(examId)){
             throw new BizException("请指定考级项目");
@@ -224,6 +227,10 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
         if(ExamStatusEnum.DELETE.equals(statusEnum)){
             examLifecycleLogDao.insert(new ExamLifecycleLog(existsExam.getId().intValue(), "删除考级项目", operatorId));
         }else if(ExamStatusEnum.RESULT_CONFIRM.equals(statusEnum)){
+            int auditWaitStudentNum = examRegistrationDao.countStudentNumWithStatusAndExam(examId, StudentRegistrationStatusEnum.AUDIT_WAIT);
+            if(auditWaitStudentNum>0){
+                throw new BizException("尚有考生未审核");
+            }
             ExamRoomExamTimeDto examRoomExamTime = examRoomDao.getExamRoomExamTime(examId);
             if(Objects.isNull(examRoomExamTime)){
                 throw new BizException("考试数据异常");

+ 18 - 5
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRegistrationMapper.xml

@@ -199,7 +199,16 @@
 		</foreach>
 	</update>
 
-	<!-- 根据主键删除一条记录 -->
+    <update id="updateRegistStatusByExam">
+		UPDATE exam_registration
+		SET status_=#{status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler}
+		<if test="memo!=null and memo!=''">
+			,memo_=#{memo}
+		</if>
+		WHERE examination_basic_id_ = #{examId} AND status_='AUDIT_WAIT'
+	</update>
+
+    <!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM exam_registration WHERE id_ = #{id}
 	</delete>
@@ -361,7 +370,7 @@
 		FROM
 			exam_registration er
 		LEFT JOIN exam_room_student_relation ersr ON ersr.exam_registration_id_ = er.id_
-		WHERE 1=1 AND er.status_ IN ('AUDIT_PASS', 'AUDIT_WAIT')
+		WHERE 1=1 AND er.status_ IN ('AUDIT_PASS')
 		<if test="organIds!=null">
 			AND er.organ_id_ IN
 			<foreach collection="organIds" item="organI" separator="," open="(" close=")">
@@ -414,13 +423,13 @@
 			</if>
     </select>
 
-	<select id="countTotalRegistrationStudentNumWithExam" resultType="int">
+	<select id="countTotalAuditPassRegistrationStudentNumWithExam" resultType="int">
 		SELECT
 			COUNT(er.id_)
 		FROM
 		exam_registration er
 		WHERE 1=1
-		AND er.status_ IN ('AUDIT_PASS', 'AUDIT_WAIT')
+		AND er.status_ IN ('AUDIT_PASS')
 		<if test="organIds!=null">
 			AND er.organ_id_ IN
 			<foreach collection="organIds" item="organI" separator="," open="(" close=")">
@@ -644,7 +653,7 @@
 			exam_registration er
 		WHERE
 			examination_basic_id_ = #{examId}
-			AND er.status_ IN ('AUDIT_PASS', 'AUDIT_WAIT')
+			AND er.status_ IN ('AUDIT_PASS')
 			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
@@ -689,4 +698,8 @@
 				</foreach>
 			</if>
 	</select>
+
+	<select id="countStudentNumWithStatusAndExam" resultType="int">
+		SELECT COUNT(id_) FROM exam_registration WHERE examination_basic_id_=#{examId} AND status_=#{status,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler}
+	</select>
 </mapper>

+ 1 - 1
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRoomStudentRelationMapper.xml

@@ -134,7 +134,7 @@
 
 	<sql id="queryCondition">
 		<where>
-			er.status_ IN ('AUDIT_PASS', 'AUDIT_WAIT')
+			er.status_ IN ('AUDIT_PASS')
 			<if test="organIds!=null">
 				AND er.organ_id_ IN
 				<foreach collection="organIds" item="organI" separator="," open="(" close=")">

+ 1 - 1
edu-user/edu-user-biz/src/main/resources/config/mybatis/StudentExamResultMapper.xml

@@ -251,7 +251,7 @@
 			LEFT JOIN student_exam_result ser ON er.id_=exam_registration_id_
 		WHERE
 			er.examination_basic_id_ = #{examId}
-			AND er.status_ IN ('AUDIT_PASS', 'AUDIT_WAIT')
+			AND er.status_ IN ('AUDIT_PASS')
 			<if test="organIds!=null">
 				AND er.organ_id_ IN
 				<foreach collection="organIds" item="organId" separator="," open="(" close=")">

+ 7 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRegistrationController.java

@@ -92,6 +92,13 @@ public class ExamRegistrationController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "更新考级项目中所有待审核学员状态")
+    @PostMapping(value = "updateExamAllRegistStatus")
+    @PreAuthorize("@pcs.hasPermissions('examRegistration/updateExamAllRegistStatus')")
+    public HttpResponseResult updateExamAllRegistStatus(Long examId, StudentRegistrationStatusEnum status, String memo){
+        return examRegistrationService.updateExamAllRegistStatus(examId, status, memo);
+    }
+
     @ApiOperation(value = "修改学员报名信息")
     @PostMapping(value = "update")
     public HttpResponseResult update(@RequestBody ExamRegistration examRegistration) {