|
@@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSONObject;
|
|
import com.keao.edu.auth.api.client.SysUserFeignService;
|
|
import com.keao.edu.auth.api.client.SysUserFeignService;
|
|
import com.keao.edu.auth.api.entity.SysUser;
|
|
import com.keao.edu.auth.api.entity.SysUser;
|
|
import com.keao.edu.common.dal.BaseDAO;
|
|
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.enums.MessageTypeEnum;
|
|
import com.keao.edu.common.exception.BizException;
|
|
import com.keao.edu.common.exception.BizException;
|
|
import com.keao.edu.common.page.PageInfo;
|
|
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.SysMessageService;
|
|
import com.keao.edu.common.service.impl.BaseServiceImpl;
|
|
import com.keao.edu.common.service.impl.BaseServiceImpl;
|
|
import com.keao.edu.common.tenant.TenantContextHolder;
|
|
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.PublishMessageDto;
|
|
import com.keao.edu.im.api.entity.ReqUserData;
|
|
import com.keao.edu.im.api.entity.ReqUserData;
|
|
import com.keao.edu.thirdparty.message.provider.JiguangPushPlugin;
|
|
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.ExamRoom;
|
|
import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
|
|
import com.keao.edu.user.api.entity.ExamRoomStudentRelation;
|
|
import com.keao.edu.user.api.enums.ExamModeEnum;
|
|
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.dto.StuRecordDetailDto;
|
|
import com.keao.edu.user.entity.*;
|
|
import com.keao.edu.user.entity.*;
|
|
import com.keao.edu.user.page.ExamRoomStudentRelationQueryInfo;
|
|
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.collection.MapUtil;
|
|
import com.keao.edu.util.date.DateUtil;
|
|
import com.keao.edu.util.date.DateUtil;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -72,6 +72,10 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
|
|
private ExamOrganizationRelationDao examOrganizationRelationDao;
|
|
private ExamOrganizationRelationDao examOrganizationRelationDao;
|
|
@Autowired
|
|
@Autowired
|
|
private SysMessageService sysMessageService;
|
|
private SysMessageService sysMessageService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private IdGeneratorService idGeneratorService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private SysConfigService sysConfigService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public BaseDAO<Long, ExamRoomStudentRelation> getDAO() {
|
|
public BaseDAO<Long, ExamRoomStudentRelation> getDAO() {
|
|
@@ -96,8 +100,8 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
|
|
if(Objects.isNull(examRoom)){
|
|
if(Objects.isNull(examRoom)){
|
|
throw new BizException("教室不存在");
|
|
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("无法添加学员");
|
|
throw new BizException("无法添加学员");
|
|
}
|
|
}
|
|
|
|
|
|
@@ -129,6 +133,8 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
|
|
}
|
|
}
|
|
|
|
|
|
List<ExamRoomStudentRelation> examRoomStudentRelations=new ArrayList<>();
|
|
List<ExamRoomStudentRelation> examRoomStudentRelations=new ArrayList<>();
|
|
|
|
+ List<ExamCertification> examCertifications=new ArrayList<>();
|
|
|
|
+ List<StudentExamResult> studentExamResults=new ArrayList<>();
|
|
for (String registId : registIds) {
|
|
for (String registId : registIds) {
|
|
if(existRegistIds.contains(Long.valueOf(registId))){
|
|
if(existRegistIds.contains(Long.valueOf(registId))){
|
|
continue;
|
|
continue;
|
|
@@ -148,6 +154,33 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
|
|
e.setStudentId(examRegistration.getStudentId());
|
|
e.setStudentId(examRegistration.getStudentId());
|
|
e.setTenantId(TenantContextHolder.getTenantId());
|
|
e.setTenantId(TenantContextHolder.getTenantId());
|
|
examRoomStudentRelations.add(e);
|
|
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)){
|
|
if(!CollectionUtils.isEmpty(examRoomStudentRelations)){
|
|
examRoomStudentRelationDao.batchInsert(examRoomStudentRelations);
|
|
examRoomStudentRelationDao.batchInsert(examRoomStudentRelations);
|
|
@@ -155,6 +188,55 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
|
|
examRoom.setExamRoomStudentNum(examRoomStudentRelationDao.countStudentsWithRoom(examRoom.getId()));
|
|
examRoom.setExamRoomStudentNum(examRoomStudentRelationDao.countStudentsWithRoom(examRoom.getId()));
|
|
examRoomDao.update(examRoom);
|
|
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
|
|
@Override
|
|
@@ -275,6 +357,9 @@ public class ExamRoomStudentRelationServiceImpl extends BaseServiceImpl<Long, Ex
|
|
if(StringUtils.isBlank(registIdsStr)){
|
|
if(StringUtils.isBlank(registIdsStr)){
|
|
return;
|
|
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()));
|
|
examRoom.setExamRoomStudentNum(examRoomStudentRelationDao.countStudentsWithRoom(examRoom.getId()));
|
|
examRoomDao.update(examRoom);
|
|
examRoomDao.update(examRoom);
|
|
examTeacherSalaryService.teacherSalarySettlementWithExam(examRoom.getExaminationBasicId());
|
|
examTeacherSalaryService.teacherSalarySettlementWithExam(examRoom.getExaminationBasicId());
|