Joburgess 5 years ago
parent
commit
0556c07fba

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

@@ -375,7 +375,7 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
 		ExamRoom examRoom = examRoomDao.get(examRoomIds.get(0));
 
 		if(examRoom.getExamPlanPushFlag()==1){
-			throw new BizException("无法删除");
+			throw new BizException("已发送考试安排,无法删除");
 		}
 
 		ExaminationBasic examinationBasic = examinationBasicDao.get(examRoom.getExaminationBasicId().longValue());

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

@@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.keao.edu.auth.api.client.SysUserFeignService;
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.dal.BaseDAO;
+import com.keao.edu.common.entity.SysConfig;
 import com.keao.edu.common.enums.MessageTypeEnum;
 import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.page.PageInfo;
+import com.keao.edu.common.service.IdGeneratorService;
 import com.keao.edu.common.service.SysMessageService;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.common.tenant.TenantContextHolder;
@@ -15,6 +17,7 @@ import com.keao.edu.im.api.entity.MemberChangedMessage;
 import com.keao.edu.im.api.entity.PublishMessageDto;
 import com.keao.edu.im.api.entity.ReqUserData;
 import com.keao.edu.thirdparty.message.provider.JiguangPushPlugin;
+import com.keao.edu.thirdparty.message.provider.YimeiSmsPlugin;
 import com.keao.edu.user.api.entity.ExamRoom;
 import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
 import com.keao.edu.user.api.enums.ExamModeEnum;
@@ -25,10 +28,7 @@ import com.keao.edu.user.dto.RoomStudentListDto;
 import com.keao.edu.user.dto.StuRecordDetailDto;
 import com.keao.edu.user.entity.*;
 import com.keao.edu.user.page.ExamRoomStudentRelationQueryInfo;
-import com.keao.edu.user.service.ExamCertificationService;
-import com.keao.edu.user.service.ExamRoomStudentRelationService;
-import com.keao.edu.user.service.ExamTeacherSalaryService;
-import com.keao.edu.user.service.OrganizationService;
+import com.keao.edu.user.service.*;
 import com.keao.edu.util.collection.MapUtil;
 import com.keao.edu.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -72,6 +72,10 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 	private ExamOrganizationRelationDao examOrganizationRelationDao;
 	@Autowired
 	private SysMessageService sysMessageService;
+	@Autowired
+	private IdGeneratorService idGeneratorService;
+	@Autowired
+	private SysConfigService sysConfigService;
 
 	@Override
 	public BaseDAO<Long, ExamRoomStudentRelation> getDAO() {
@@ -96,8 +100,8 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		if(Objects.isNull(examRoom)){
 			throw new BizException("教室不存在");
 		}
-
-		if(examRoom.getExamPlanPushFlag()==1){
+		Date now=new Date();
+		if(now.compareTo(examRoom.getExamStartTime())>0||DateUtil.isSameDay(now, examRoom.getExamStartTime())){
 			throw new BizException("无法添加学员");
 		}
 
@@ -129,6 +133,8 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		}
 
 		List<ExamRoomStudentRelation> examRoomStudentRelations=new ArrayList<>();
+		List<ExamCertification> examCertifications=new ArrayList<>();
+		List<StudentExamResult> studentExamResults=new ArrayList<>();
 		for (String registId : registIds) {
 			if(existRegistIds.contains(Long.valueOf(registId))){
 				continue;
@@ -148,6 +154,33 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 			e.setStudentId(examRegistration.getStudentId());
 			e.setTenantId(TenantContextHolder.getTenantId());
 			examRoomStudentRelations.add(e);
+
+			if(examRoom.getExamPlanPushFlag()==1){
+				ExamCertification ec=new ExamCertification();
+				ec.setExamRegistrationId(examRegistration.getId().longValue());
+				ec.setExaminationBasicId(examRegistration.getExaminationBasicId());
+				ec.setStudentId(examRegistration.getStudentId());
+				ec.setCardNo(String.valueOf(idGeneratorService.generatorId()));
+				ec.setSubjectId(examRegistration.getSubjectId());
+				ec.setLevel(examRegistration.getLevel());
+				ec.setExamStartTime(examRoom.getExamStartTime());
+				ec.setExamEndTime(examRoom.getExamEndTime());
+				if(ExamModeEnum.OFFLINE.equals(examRoom.getExamMode())){
+					ec.setExamAddress(examLocation.getName());
+				}
+				ec.setTenantId(TenantContextHolder.getTenantId());
+				examCertifications.add(ec);
+
+				StudentExamResult ser = new StudentExamResult();
+				ser.setExamRegistrationId(examRegistration.getId().longValue());
+				ser.setExaminationBasicId(examRegistration.getExaminationBasicId());
+				ser.setStudentId(examRegistration.getStudentId());
+				ser.setIsFinishedExam(3);
+				ser.setConfirmStatus(0);
+				ser.setTenantId(TenantContextHolder.getTenantId());
+				ser.setExamRoomId(examRoom.getId());
+				studentExamResults.add(ser);
+			}
 		}
 		if(!CollectionUtils.isEmpty(examRoomStudentRelations)){
 			examRoomStudentRelationDao.batchInsert(examRoomStudentRelations);
@@ -155,6 +188,55 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 			examRoom.setExamRoomStudentNum(examRoomStudentRelationDao.countStudentsWithRoom(examRoom.getId()));
 			examRoomDao.update(examRoom);
 		}
+		if(!CollectionUtils.isEmpty(examCertifications)){
+			examCertificationService.batchInsert(examCertifications);
+		}
+		if(!CollectionUtils.isEmpty(studentExamResults)){
+			studentExamResultDao.batchInsert(studentExamResults);
+			ExaminationBasic exam = examinationBasicDao.get(examRoom.getExaminationBasicId());
+			SysConfig baseH5UrlConfig = sysConfigService.findByParamName(SysConfigService.BASE_H5_URL);
+			String baseH5Url = "";
+			if(Objects.nonNull(baseH5UrlConfig)){
+				baseH5Url = baseH5UrlConfig.getParanValue();
+			}
+
+			Map<Integer, String> idPhoneMap = this.getMap("sys_user", "id_", "phone_", new ArrayList(studentIds), Integer.class, String.class);
+
+			String baseUrl = "2?examRegistrationId=";
+			String downloadUrl = baseH5Url + "/#/downLoad?memo=2&examRegistrationId=";
+			for (ExamRoomStudentRelation examRoomStudentRelation : examRoomStudentRelations) {
+				MessageTypeEnum pushMessageType = MessageTypeEnum.EXAM_ROOM_CONFIRM_ONLINE_STUDENT_PUSH;
+				MessageTypeEnum smsMessageType = MessageTypeEnum.EXAM_ROOM_CONFIRM_ONLINE_STUDENT_SMS;
+
+				Map<Integer, String> receiverMap = new HashMap<>(1);
+				receiverMap.put(examRoomStudentRelation.getStudentId(), examRoomStudentRelation.getStudentId().toString());
+
+				Map<Integer, String> phoneMap = new HashMap<>(1);
+				phoneMap.put(examRoomStudentRelation.getStudentId(), idPhoneMap.get(examRoomStudentRelation.getStudentId()));
+
+				String examName = exam.getName();
+
+				String examDayStr = DateUtil.dateToString(examRoom.getExamStartTime(), "MM月dd日");
+				StringBuffer examTimeStr = new StringBuffer();
+				examTimeStr.append(DateUtil.dateToString(examRoom.getExamStartTime(), "HH时mm分"));
+				examTimeStr.append("-");
+				examTimeStr.append(DateUtil.dateToString(examRoom.getExamEndTime(), "HH时mm分"));
+
+				String locationName = "网络考场";
+				if(ExamModeEnum.OFFLINE.equals(examRoom.getExamMode())){
+					pushMessageType = MessageTypeEnum.EXAM_ROOM_CONFIRM_OFFLINE_STUDENT_PUSH;
+					smsMessageType = MessageTypeEnum.EXAM_ROOM_CONFIRM_OFFLINE_STUDENT_SMS;
+					locationName=examLocation.getName();
+				}
+				String url = baseUrl + examRoomStudentRelation.getExamRegistrationId();
+				sysMessageService.batchSendMessage(pushMessageType,
+						receiverMap, null, 0, url, JiguangPushPlugin.PLUGIN_NAME,
+						examName, examDayStr, examTimeStr, locationName);
+				sysMessageService.batchSendMessage(smsMessageType,
+						phoneMap, null, 0, null, YimeiSmsPlugin.PLUGIN_NAME,
+						examName, examDayStr, examTimeStr, locationName, downloadUrl + examRoomStudentRelation.getExamRegistrationId());
+			}
+		}
 	}
 
 	@Override
@@ -275,6 +357,9 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
 		if(StringUtils.isBlank(registIdsStr)){
 			return;
 		}
+		List<Long> registIds = Arrays.asList(registIdsStr.split(",")).stream().map(e -> Long.valueOf(e)).collect(Collectors.toList());
+		examRoomStudentRelationDao.deleteStudentsFromExamRoom(examRoomId, registIds);
+		studentExamResultDao.deleteWithRegists(registIds);
 		examRoom.setExamRoomStudentNum(examRoomStudentRelationDao.countStudentsWithRoom(examRoom.getId()));
 		examRoomDao.update(examRoom);
 		examTeacherSalaryService.teacherSalarySettlementWithExam(examRoom.getExaminationBasicId());

+ 11 - 4
edu-user/edu-user-biz/src/main/resources/config/mybatis/ExamRoomMapper.xml

@@ -8,6 +8,7 @@
 	
 	<resultMap type="com.keao.edu.user.api.entity.ExamRoom" id="ExamRoom">
 		<result column="id_" property="id" />
+		<result column="name_" property="name"/>
 		<result column="examination_basic_id_" property="examinationBasicId"/>
 		<result column="exam_mode_" property="examMode" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
 		<result column="exam_location_id_" property="examLocationId" />
@@ -43,24 +44,24 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.keao.edu.user.api.entity.ExamRoom" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO exam_room (id_,examination_basic_id_,exam_mode_,exam_location_id_,subject_id_list_,subject_name_list_,
+		INSERT INTO exam_room (id_,name_,examination_basic_id_,exam_mode_,exam_location_id_,subject_id_list_,subject_name_list_,
 		main_teacher_user_id_,main_teacher_user_name_,assistant_teacher_user_id_list_,assistant_teacher_user_name_list_,
 		exam_start_time_,exam_end_time_,del_flag_,organ_id_,exam_plan_push_flag_,
 		exam_room_student_num_,create_time_,update_time_,tenant_id_,exam_flag_)
-		VALUES(#{id},#{examinationBasicId},#{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examLocationId},
+		VALUES(#{id},#{name},#{examinationBasicId},#{examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examLocationId},
 		#{subjectIdList},#{subjectNameList},#{mainTeacherUserId},#{mainTeacherName},#{assistantTeacherUserIdList},#{assistantTeacherUserNameList},
 		#{examStartTime},#{examEndTime},#{delFlag},#{organId},#{examPlanPushFlag},
 		#{examRoomStudentNum},NOW(),NOW(),#{tenantId},#{examFlag})
 	</insert>
 
 	<insert id="batchInsert" parameterType="com.keao.edu.user.api.entity.ExamRoom" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO exam_room (examination_basic_id_,exam_mode_,exam_location_id_,subject_id_list_,subject_name_list_,
+		INSERT INTO exam_room (name_,examination_basic_id_,exam_mode_,exam_location_id_,subject_id_list_,subject_name_list_,
 		main_teacher_user_id_,main_teacher_user_name_,assistant_teacher_user_id_list_,assistant_teacher_user_name_list_,
 		exam_start_time_,exam_end_time_,del_flag_,organ_id_,exam_plan_push_flag_,
 		exam_room_student_num_,create_time_,update_time_,tenant_id_)
 		VALUES
 		<foreach collection="examRooms" item="examRoom" separator=",">
-			(#{examRoom.examinationBasicId},#{examRoom.examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examRoom.examLocationId},
+			(#{examRoom.name},#{examRoom.examinationBasicId},#{examRoom.examMode,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},#{examRoom.examLocationId},
 			#{examRoom.subjectIdList},#{examRoom.subjectNameList},
 			#{examRoom.mainTeacherUserId},#{examRoom.mainTeacherName},#{examRoom.assistantTeacherUserIdList},#{examRoom.assistantTeacherUserNameList},
 			#{examRoom.examStartTime},#{examRoom.examEndTime},#{examRoom.delFlag},#{examRoom.organId},#{examRoom.examPlanPushFlag},
@@ -72,6 +73,9 @@
 	<update id="update" parameterType="com.keao.edu.user.api.entity.ExamRoom">
 		UPDATE exam_room
 		<set>
+			<if test="name!=null">
+				name_=#{name},
+			</if>
 			<if test="shieldUserId != null">
 				shield_user_id_ = #{shieldUserId},
 			</if>
@@ -136,6 +140,9 @@
 		<foreach collection="examRooms" item="er" separator=";">
 			UPDATE exam_room
 			<set>
+				<if test="er.name!=null">
+					name_=#{er.name},
+				</if>
 				<if test="er.delFlag != null">
 					del_flag_ = #{er.delFlag},
 				</if>

+ 11 - 0
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/ExamRoom.java

@@ -13,6 +13,9 @@ public class ExamRoom{
 
 	private Long id;
 
+	@ApiModelProperty(value = "考场名称")
+	private String name;
+
 	@ApiModelProperty(value = "考级项目编号")
 	private Long examinationBasicId;
 	
@@ -115,6 +118,14 @@ public class ExamRoom{
 		return this.id;
 	}
 
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
 	public Long getExaminationBasicId() {
 		return examinationBasicId;
 	}