|
@@ -171,6 +171,8 @@ public class MeetingRoomService {
|
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
|
|
|
|
|
|
+ LocalDate curDate = LocalDate.now();//当前日期
|
|
|
+
|
|
|
|
|
|
//限制会议选择的时间 并转为time类型
|
|
|
LocalTime time1 = LocalTime.of(9, 0, 0); // 9:00:00
|
|
@@ -191,107 +193,52 @@ public class MeetingRoomService {
|
|
|
if (ObjectUtil.isNotEmpty(meetingRooms)){
|
|
|
List<Map<String, String>> meetingRoomMaps = new ArrayList<>();
|
|
|
for (MeetingRoom meetingRoom : meetingRooms) {
|
|
|
- HashMap<String, String> hashMap = new HashMap<>();
|
|
|
- //判断会议结束后的半小时是否在规定范围内
|
|
|
- LocalTime newEndTime = meetingRoom.getEndTime().toLocalTime().plus(30 * 60, ChronoUnit.SECONDS);
|
|
|
- String format = newEndTime.format(formatter);
|
|
|
- Time endTime = Time.valueOf(format);
|
|
|
- if ((endTime.after(am1) && endTime.before(am2)) || (endTime.after(pm1) && endTime.before(pm2))) {
|
|
|
- //创建集合将获取到的开始时间存到集合中
|
|
|
- LocalTime localTime = meetingRoom.getStartTime().toLocalTime();
|
|
|
- hashMap.put("0", meetingRoom.getStartTime().toString());
|
|
|
- //将开始时间之后的每半小时的时间存到map中
|
|
|
- for (int i = 0; i < 48; i++) {
|
|
|
- int minute = localTime.getMinute();
|
|
|
- if (minute < 30) {
|
|
|
- localTime = localTime.withMinute(30);
|
|
|
- } else {
|
|
|
- localTime = localTime.withMinute(0).plusHours(1);
|
|
|
- }
|
|
|
- hashMap.put((i + 1) + "", localTime.format(formatter));
|
|
|
- //当新时间与会议结束时间一致时,在延续半小时,循环结束
|
|
|
- Time time = Time.valueOf(localTime.format(formatter));
|
|
|
- if (time.equals(meetingRoom.getEndTime())) {
|
|
|
- int m = localTime.getMinute();
|
|
|
- if (m < 30) {
|
|
|
- localTime = localTime.withMinute(30);
|
|
|
- } else {
|
|
|
- localTime = localTime.withMinute(0).plusHours(1);
|
|
|
- }
|
|
|
- hashMap.put((i + 2) + "", localTime.format(formatter));
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }else {
|
|
|
- Map<String, String> emptyMap = new HashMap<>();
|
|
|
- meetingRoomMaps.add(emptyMap);
|
|
|
- }
|
|
|
- hashMap.put("0", meetingRoom.getStartTime().toString());
|
|
|
- meetingRoomMaps.add(hashMap); // 将当前会议的映射添加到列表中
|
|
|
- }
|
|
|
- //将找到的时间重新存入到新的map中
|
|
|
- if (ObjectUtils.isNotEmpty(meetingRoomMaps)){
|
|
|
- for (Map<String, String> map : meetingRoomMaps) {
|
|
|
- for (Map.Entry<String, String> entry : map.entrySet()) {
|
|
|
- String key = entry.getKey();
|
|
|
- String value = entry.getValue();
|
|
|
- if (mergedMap.containsKey(key)) {
|
|
|
- int size = mergedMap.size();
|
|
|
- mergedMap.put((size+1)+"",value);
|
|
|
- } else {
|
|
|
- mergedMap.put(key, value);
|
|
|
- }
|
|
|
- }
|
|
|
+ //将获取到的开始时间和结束时间转为LocalDateTime格式,用以比较
|
|
|
+ LocalTime startTimeLocal = meetingRoom.getStartTime().toLocalTime();
|
|
|
+ LocalTime endTimeLocal = meetingRoom.getEndTime().toLocalTime();
|
|
|
+
|
|
|
+ LocalDateTime startDateTime = LocalDateTime.of(curDate, startTimeLocal);
|
|
|
+ LocalDateTime endDateTime = LocalDateTime.of(curDate, endTimeLocal);
|
|
|
+
|
|
|
+ LocalDateTime current = startDateTime;
|
|
|
+ //确保开始时间在结束时间之前
|
|
|
+ while (!current.isAfter(endDateTime)) {
|
|
|
+ String start = current.format(formatter);
|
|
|
+ mergedMap.put(start,start);
|
|
|
+ //计算半小时之后的时间
|
|
|
+ LocalDateTime truncatedTime = current.truncatedTo(ChronoUnit.HOURS).plusMinutes(current.getMinute() / 30 * 30);
|
|
|
+ String truncatedTimeStr = truncatedTime.format(formatter);
|
|
|
+ //存到map中
|
|
|
+ mergedMap.put(truncatedTimeStr,truncatedTimeStr);
|
|
|
+
|
|
|
+ current = current.plusMinutes(30); // 移到下一个半小时的时间点
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- //获取当天日期
|
|
|
- LocalDate today = LocalDate.now();
|
|
|
+
|
|
|
//获取会议预约日期
|
|
|
DateTimeFormatter formatte = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
LocalDate startDate1 = LocalDate.parse(startDate, formatte);
|
|
|
//比较两个日期,
|
|
|
- if (today.equals(startDate1)){
|
|
|
+ if (curDate.equals(startDate1)){
|
|
|
//获取当前时间
|
|
|
LocalTime now = LocalTime.now();
|
|
|
- String format1 = now.format(formatter);
|
|
|
- Time nowDate = Time.valueOf(format1);
|
|
|
+ LocalDateTime nowDate = LocalDateTime.of(curDate, now);//当前时间
|
|
|
ArrayList<LocalTime> dateList = new ArrayList<>();
|
|
|
- //判断当前时间在哪个范围内
|
|
|
- if ((nowDate.after(am1) && nowDate.before(am2)) || (nowDate.after(am2) && nowDate.before(pm1)) || nowDate.after(pm2)){
|
|
|
- // 获取时间段内的所有时间
|
|
|
+ LocalDateTime morning=LocalDateTime.of(curDate, time1); //上午九点
|
|
|
+ //将上午九点开始,截止到当前时间,中间的每半个小时存放到集合中
|
|
|
+ while (nowDate.isAfter(morning) || nowDate.isEqual(morning)){
|
|
|
LocalTime currentTime = time1;
|
|
|
dateList.add(currentTime);
|
|
|
- while (currentTime.isBefore(time2)) {
|
|
|
- currentTime = currentTime.plus(30 * 60, ChronoUnit.SECONDS); // 每隔半小时
|
|
|
- dateList.add(currentTime);
|
|
|
- }
|
|
|
- //将每半个小时的时间进行遍历,与当前时间比较
|
|
|
- for (LocalTime localTime : dateList) {
|
|
|
- Time time = Time.valueOf(localTime);
|
|
|
- //如果当前时间在每半小时间隔之后,则将之前的存到map中
|
|
|
- if (nowDate.after(time)){
|
|
|
- mergedMap.put(time+"",localTime.format(formatter));
|
|
|
- }
|
|
|
+ // 循环直到当前时间或者下一个半点的开始时间
|
|
|
+ while (LocalDateTime.of(curDate, currentTime).isBefore(nowDate.truncatedTo(ChronoUnit.HOURS))) {
|
|
|
+ currentTime = currentTime.plus(30, ChronoUnit.MINUTES); // 每隔半小时
|
|
|
+ dateList.add(currentTime); // 添加半小时后的时间点
|
|
|
}
|
|
|
}
|
|
|
- if ((nowDate.after(pm1) && nowDate.before(pm2)) || nowDate.after(pm2)){
|
|
|
- // 获取时间段内的所有时间
|
|
|
- LocalTime currentTime = time3;
|
|
|
- while (currentTime.isBefore(time4)) {
|
|
|
- currentTime = currentTime.plus(30 * 60, ChronoUnit.SECONDS); // 每隔半小时
|
|
|
- dateList.add(currentTime);
|
|
|
- }
|
|
|
- //将每半个小时的时间进行遍历,与当前时间比较
|
|
|
- for (LocalTime localTime : dateList) {
|
|
|
- Time time = Time.valueOf(localTime);
|
|
|
- //如果当前时间在每半小时间隔之后,则将之前的存到map中
|
|
|
- if (nowDate.after(time)){
|
|
|
- mergedMap.put(time+"",localTime.format(formatter));
|
|
|
- }
|
|
|
- }
|
|
|
+ //将获取到的时间存到map中
|
|
|
+ for (LocalTime localTime : dateList) {
|
|
|
+ mergedMap.put(localTime.format(formatter),localTime.format(formatter));
|
|
|
}
|
|
|
}
|
|
|
|