|
@@ -40,6 +40,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -337,8 +338,8 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
|
|
|
Set<Integer> locationIds = examRoomStudentWithOrgans.stream().filter(e -> Objects.nonNull(e.getExamLocationId())).map(ExamRoomStudentRelation::getExamLocationId).collect(Collectors.toSet());
|
|
|
Map<Integer, String> idLocationMap = this.getMap("exam_location", "id_", "name_", new ArrayList(locationIds), Integer.class, String.class);
|
|
|
|
|
|
- Set<Integer> AllStudentIds = examRoomStudentWithOrgans.stream().map(ExamRoomStudentRelation::getStudentId).collect(Collectors.toSet());
|
|
|
- Map<Integer, String> idPhoneMap = this.getMap("sys_user", "id_", "phone_", new ArrayList(AllStudentIds), Integer.class, String.class);
|
|
|
+ Set<Integer> allStudentIds = examRoomStudentWithOrgans.stream().map(ExamRoomStudentRelation::getStudentId).collect(Collectors.toSet());
|
|
|
+ Map<Integer, String> idPhoneMap = this.getMap("sys_user", "id_", "phone_", new ArrayList(allStudentIds), Integer.class, String.class);
|
|
|
|
|
|
Map<Long, List<ExamRoomStudentRelation>> examRoomStudentMap = examRoomStudentWithOrgans.stream().collect(Collectors.groupingBy(ExamRoomStudentRelation::getExamRoomId));
|
|
|
|
|
@@ -381,9 +382,9 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
|
|
|
|
|
|
String examDayStr = DateUtil.dateToString(examRoom.getExamStartTime(), "MM月dd日");
|
|
|
StringBuffer examTimeStr = new StringBuffer();
|
|
|
- examTimeStr.append(DateUtil.dateToString(examRoom.getExamStartTime(), "MM月dd日"));
|
|
|
+ examTimeStr.append(DateUtil.dateToString(examRoom.getExamStartTime(), "HH时mm分"));
|
|
|
examTimeStr.append("-");
|
|
|
- examTimeStr.append(DateUtil.dateToString(examRoom.getExamEndTime(), "MM月dd日"));
|
|
|
+ examTimeStr.append(DateUtil.dateToString(examRoom.getExamEndTime(), "HH时mm分"));
|
|
|
|
|
|
String locationName = "网络考场";
|
|
|
if(ExamModeEnum.OFFLINE.equals(examRoom.getExamMode())){
|
|
@@ -399,7 +400,7 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
|
|
|
examName, examDayStr, examTimeStr, locationName);
|
|
|
}
|
|
|
|
|
|
- Map<Integer, String> idTeacherPhoneMap = this.getMap("sys_user", "id_", "real_name_", new ArrayList(teacherExamRoomsMap.keySet()), Integer.class, String.class);
|
|
|
+ Map<Integer, String> idTeacherPhoneMap = this.getMap("sys_user", "id_", "phone_", new ArrayList(teacherExamRoomsMap.keySet()), Integer.class, String.class);
|
|
|
for (Map.Entry<Integer, List<ExamRoom>> teacherRoomEntry : teacherExamRoomsMap.entrySet()) {
|
|
|
String teacherPhone = idTeacherPhoneMap.get(teacherRoomEntry.getKey());
|
|
|
Date examStartTime = teacherRoomEntry.getValue().stream().min(Comparator.comparing(ExamRoom::getExamStartTime)).get().getExamStartTime();
|
|
@@ -419,7 +420,70 @@ public class ExamRoomServiceImpl extends BaseServiceImpl<Long, ExamRoom> impleme
|
|
|
|
|
|
@Override
|
|
|
public void tomorrowExamPlanRemind() {
|
|
|
+ LocalDate tomorrowDate = LocalDate.now().plusDays(1);
|
|
|
+ List<ExamRoomStudentRelation> tomorrowExamStudents = examRoomStudentRelationDao.getTomorrowExamStudents(tomorrowDate.toString());
|
|
|
+ if(CollectionUtils.isEmpty(tomorrowExamStudents)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<Integer> allStudentIds = tomorrowExamStudents.stream().map(ExamRoomStudentRelation::getStudentId).collect(Collectors.toSet());
|
|
|
+ Map<Integer, String> idPhoneMap = this.getMap("sys_user", "id_", "phone_", new ArrayList(allStudentIds), Integer.class, String.class);
|
|
|
+
|
|
|
+ Map<Long, List<ExamRoomStudentRelation>> examRoomStudentMap = tomorrowExamStudents.stream().collect(Collectors.groupingBy(ExamRoomStudentRelation::getExamRoomId));
|
|
|
|
|
|
+ Map<Integer, List<ExamRoom>> teacherExamRoomsMap = new HashMap<>();
|
|
|
+
|
|
|
+ for (Map.Entry<Long, List<ExamRoomStudentRelation>> examRoomStudentEntry : examRoomStudentMap.entrySet()) {
|
|
|
+ List<ExamRoomStudentRelation> students = examRoomStudentEntry.getValue();
|
|
|
+ Set<Integer> studentIds = students.stream().map(ExamRoomStudentRelation::getStudentId).collect(Collectors.toSet());
|
|
|
+ if(CollectionUtils.isEmpty(studentIds)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ ExamRoom examRoom=students.get(0);
|
|
|
+ examRoom.setId(students.get(0).getExamRoomId());
|
|
|
+
|
|
|
+ if(!teacherExamRoomsMap.containsKey(examRoom.getMainTeacherUserId())){
|
|
|
+ teacherExamRoomsMap.put(examRoom.getMainTeacherUserId(), new ArrayList<>());
|
|
|
+ }
|
|
|
+ teacherExamRoomsMap.get(examRoom.getMainTeacherUserId()).add(examRoom);
|
|
|
+ if(StringUtils.isNotBlank(examRoom.getAssistantTeacherUserIdList())){
|
|
|
+ Set<Integer> ateacherIds = Arrays.stream(examRoom.getAssistantTeacherUserIdList().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toSet());
|
|
|
+ for (Integer ateacherId : ateacherIds) {
|
|
|
+ if(!teacherExamRoomsMap.containsKey(ateacherId)){
|
|
|
+ teacherExamRoomsMap.put(ateacherId, new ArrayList<>());
|
|
|
+ }
|
|
|
+ teacherExamRoomsMap.get(ateacherId).add(examRoom);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Integer, String> receiverMap = studentIds.stream().collect(Collectors.toMap(e->e, e->e.toString()));
|
|
|
+ Map<Integer, String> phoneMap = idPhoneMap.entrySet().stream().filter(e->studentIds.contains(e.getKey())).collect(Collectors.toMap(e->e.getKey(), e->e.getValue()));
|
|
|
+
|
|
|
+ String examDayStr = DateUtil.dateToString(examRoom.getExamStartTime(), "MM月dd日");
|
|
|
+ StringBuffer examTimeStr = new StringBuffer();
|
|
|
+ examTimeStr.append(DateUtil.dateToString(examRoom.getExamStartTime(), "HH时mm分"));
|
|
|
+
|
|
|
+
|
|
|
+ sysMessageService.batchSendMessage(MessageTypeEnum.BEFORE_EXAM_STUDENT_REMIND_PUSH,
|
|
|
+ receiverMap, null, 0, null, JiguangPushPlugin.PLUGIN_NAME,
|
|
|
+ examDayStr, examTimeStr.toString());
|
|
|
+ sysMessageService.batchSendMessage(MessageTypeEnum.BEFORE_EXAM_STUDENT_REMIND_SMS,
|
|
|
+ phoneMap, null, 0, null, YimeiSmsPlugin.PLUGIN_NAME,
|
|
|
+ examDayStr, examTimeStr.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Integer, String> idTeacherPhoneMap = this.getMap("sys_user", "id_", "phone_", new ArrayList(teacherExamRoomsMap.keySet()), Integer.class, String.class);
|
|
|
+ for (Map.Entry<Integer, List<ExamRoom>> teacherRoomEntry : teacherExamRoomsMap.entrySet()) {
|
|
|
+ String teacherPhone = idTeacherPhoneMap.get(teacherRoomEntry.getKey());
|
|
|
+ Date examStartTime = teacherRoomEntry.getValue().stream().min(Comparator.comparing(ExamRoom::getExamStartTime)).get().getExamStartTime();
|
|
|
+ String examStartTimeStr = DateUtil.dateToString(examStartTime, "MM月dd日 HH时mm分");
|
|
|
+ int examRoomNum = teacherRoomEntry.getValue().size();
|
|
|
+ Map<Integer, String> phoneMap = new HashMap<>();
|
|
|
+ phoneMap.put(teacherRoomEntry.getKey(), teacherPhone);
|
|
|
+ sysMessageService.batchSendMessage(MessageTypeEnum.BEFORE_EXAM_TEACHER_REMIND_SMS,
|
|
|
+ phoneMap, null, 0, null, YimeiSmsPlugin.PLUGIN_NAME,
|
|
|
+ examStartTimeStr, examRoomNum);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|