|
@@ -17,9 +17,15 @@ import com.jeeplus.utils.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.sql.Time;
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.Date;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
public class MeetingRoomService {
|
|
@@ -42,7 +48,7 @@ public class MeetingRoomService {
|
|
|
meetingRoomQueryWrapper.eq("a.del_flag",0);
|
|
|
//会议开始时间
|
|
|
if (meetingRoom.getMeetingDates() != null && meetingRoom.getMeetingDates().length >0){
|
|
|
- meetingRoomQueryWrapper.between("a.start_time",meetingRoom.getMeetingDates()[0],meetingRoom.getMeetingDates()[1]);
|
|
|
+ meetingRoomQueryWrapper.between("a.start_date",meetingRoom.getMeetingDates()[0],meetingRoom.getMeetingDates()[1]);
|
|
|
}
|
|
|
//标题
|
|
|
if (StringUtils.isNotBlank(meetingRoom.getTitle())){
|
|
@@ -53,6 +59,9 @@ public class MeetingRoomService {
|
|
|
meetingRoomQueryWrapper.eq("so.id",meetingRoom.getOfficeId());
|
|
|
}
|
|
|
IPage<MeetingRoom> iPage=meetingRoomMapper.findPageList(page,meetingRoomQueryWrapper);
|
|
|
+ iPage.getRecords().stream().forEach(item->{
|
|
|
+ item.setStartDateTime(item.getStartDate()+" "+item.getStartTime());
|
|
|
+ });
|
|
|
|
|
|
return iPage;
|
|
|
}
|
|
@@ -62,11 +71,14 @@ public class MeetingRoomService {
|
|
|
* @param meetingRoomDTO
|
|
|
* @return
|
|
|
*/
|
|
|
- public String saveForm(MeetingRoomDTO meetingRoomDTO) {
|
|
|
+ public String saveForm(MeetingRoomDTO meetingRoomDTO) throws ParseException {
|
|
|
UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
|
|
|
//创建会议室对象并进行复制
|
|
|
MeetingRoom meetingRoom = new MeetingRoom();
|
|
|
BeanUtil.copyProperties(meetingRoomDTO,meetingRoom);
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ SimpleDateFormat Format = new SimpleDateFormat("HH:mm");
|
|
|
+ meetingRoom.setStartDate(meetingRoomDTO.getStartDate()); // 会议开始日期
|
|
|
meetingRoom.setStartTime(meetingRoomDTO.getStartTime());// 会议开始时间
|
|
|
meetingRoom.setTitle(meetingRoomDTO.getTitle()); //标题
|
|
|
Integer timeLong=0;
|
|
@@ -86,8 +98,18 @@ public class MeetingRoomService {
|
|
|
meetingRoom.setUpdateTime(new Date());
|
|
|
meetingRoom.setDelFlag(0);
|
|
|
//会议结束时间
|
|
|
- Date endDate = new Date(meetingRoomDTO.getStartTime().getTime() + (timeLong * 1000));
|
|
|
- meetingRoom.setEndTime(endDate);
|
|
|
+
|
|
|
+ //将开始时间转为LocalTime
|
|
|
+ LocalTime localTime = meetingRoom.getStartTime().toLocalTime();
|
|
|
+ //调用plus方法获取timglong之后的时间
|
|
|
+ LocalTime plus = localTime.plus(timeLong, ChronoUnit.SECONDS);
|
|
|
+ //设置时间格式
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
|
|
|
+ String formattedDate = plus.format(formatter);
|
|
|
+ //生成新的time类型的时间
|
|
|
+ Time time = Time.valueOf(formattedDate);
|
|
|
+ meetingRoom.setEndTime(time);
|
|
|
+
|
|
|
|
|
|
if (StringUtils.isNotBlank(meetingRoomDTO.getId())){
|
|
|
meetingRoomMapper.updateById(meetingRoom);
|
|
@@ -119,30 +141,70 @@ public class MeetingRoomService {
|
|
|
|
|
|
/**
|
|
|
* 根据会议开始时间查询最近结束的会议时间
|
|
|
- * @param startTime
|
|
|
+ * @param startDate
|
|
|
* @return
|
|
|
*/
|
|
|
- public Boolean checkTime(String startTime) throws ParseException {
|
|
|
+ public Map<String, String> checkTime(String startDate) throws ParseException {
|
|
|
//格式化输入的开始时间
|
|
|
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|
|
- Date date = simpleDateFormat.parse(startTime);
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Date date = simpleDateFormat.parse(startDate);
|
|
|
|
|
|
MeetingRoom meetingRoom=meetingRoomMapper.checkTime(date);
|
|
|
+ ArrayList<Map<String, String>> strings = new ArrayList<>();
|
|
|
+
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
|
|
|
+ HashMap<String, String> hashMap = new HashMap<>();
|
|
|
+
|
|
|
+ //限制会议选择的时间 并转为time类型
|
|
|
+ LocalTime time1 = LocalTime.of(9, 0, 0); // 9:00:00
|
|
|
+ String date1 = time1.format(formatter);
|
|
|
+ Time am1 = Time.valueOf(date1);
|
|
|
+ LocalTime time2 = LocalTime.of(11, 30, 0); // 11:30:00
|
|
|
+ String date2 = time2.format(formatter);
|
|
|
+ Time am2 = Time.valueOf(date2);
|
|
|
+ LocalTime time3 = LocalTime.of(14, 0, 0); // 14:00:00
|
|
|
+ String date3 = time3.format(formatter);
|
|
|
+ Time pm1 = Time.valueOf(date3);
|
|
|
+ LocalTime time4 = LocalTime.of(17, 0, 0); // 17:00:00
|
|
|
+ String date4 = time4.format(formatter);
|
|
|
+ Time pm2 = Time.valueOf(date4);
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(meetingRoom)){
|
|
|
- //判断上一个会议结束的时间在新的开始时间之前还是之后
|
|
|
- if (meetingRoom.getEndTime().after(date)){
|
|
|
- return false;
|
|
|
- }else {
|
|
|
- //将上一个会议往后顺延30分钟,然后在判断顺延后的时间与新的开始时间大小
|
|
|
- Long endTime=meetingRoom.getEndTime().getTime()+30*60*1000;
|
|
|
- Long time=date.getTime();
|
|
|
- if (endTime>=time){
|
|
|
- return false;
|
|
|
+ //判断会议结束后的半小时是否在规定范围内
|
|
|
+ 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 {
|
|
|
+ return hashMap;
|
|
|
}
|
|
|
}
|
|
|
- return true;
|
|
|
+ return hashMap;
|
|
|
}
|
|
|
|
|
|
/**
|