From 0b43e8e01325a2908357270f206e08f35ca170a0 Mon Sep 17 00:00:00 2001 From: chendaze <1824191732@qq.com> Date: Mon, 4 Mar 2024 16:43:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=92=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=86=E4=BC=9A=E8=AE=AE=E5=AE=A4=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ics/admin/domain/meeting/Reservation.java | 67 ++++++++- .../admin/domain/meeting/ReservationDTO.java | 14 ++ .../impl/meeting/ReservationServiceImpl.java | 50 +++++++ .../impl/meeting/RoomContentServiceImpl.java | 47 +++++- .../service/meeting/IReservationService.java | 2 + .../service/meeting/IRoomContentService.java | 4 + .../admin/meeting/ReservationMapper.xml | 18 +-- .../core/domain/dto/DevicePersonDto.java | 23 +++ .../core/domain/dto/DevicePersonsDto.java | 11 ++ .../ics/common/core/domain/dto/FacesDto.java | 11 ++ .../com/ics/common/utils/DeviceUtils.java | 138 ++++++++++++++++++ .../meeting/ApiRoomContentController.java | 36 ++++- 12 files changed, 395 insertions(+), 26 deletions(-) create mode 100644 ics-admin/src/main/java/com/ics/admin/domain/meeting/ReservationDTO.java create mode 100644 ics-common/ics-common-core/src/main/java/com/ics/common/core/domain/dto/DevicePersonDto.java create mode 100644 ics-common/ics-common-core/src/main/java/com/ics/common/core/domain/dto/DevicePersonsDto.java create mode 100644 ics-common/ics-common-core/src/main/java/com/ics/common/core/domain/dto/FacesDto.java create mode 100644 ics-common/ics-common-core/src/main/java/com/ics/common/utils/DeviceUtils.java diff --git a/ics-admin/src/main/java/com/ics/admin/domain/meeting/Reservation.java b/ics-admin/src/main/java/com/ics/admin/domain/meeting/Reservation.java index f0b4f0e..242c774 100644 --- a/ics-admin/src/main/java/com/ics/admin/domain/meeting/Reservation.java +++ b/ics-admin/src/main/java/com/ics/admin/domain/meeting/Reservation.java @@ -1,5 +1,7 @@ package com.ics.admin.domain.meeting; +import com.baomidou.mybatisplus.annotation.IEnum; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.ics.common.core.domain.BaseEntity; import lombok.Data; @@ -31,8 +33,65 @@ public class Reservation extends BaseEntity { /** 主题(会议主题、展厅主题) */ private String title; - /** 预约状态 */ - private Integer stauts; + @TableField(exist = false) + private String statusName; + + @TableField(exist = false) + private Integer statusValue; + + /** 预约状态 0待支付,1.已预约,2.进行中,3已结束,4.已取消 */ + private Status stauts; + public enum Status implements IEnum { + TO_BE_PAID("待支付", 0), + + /** + * 报名中 + */ + APPOINTMENT("已预约", 1), + + /** + * 活动未开始 + */ + ONGOING("进行中", 2), + + + /** + * 已满额 + */ + ENDED("已结束", 3), + + /** + * 已满额 + */ + CANCELED("已取消", 4); + + + private String name; + private int value; + + Status(String name, int value) { + this.name = name; + this.value = value; + } + + @Override + public Integer getValue() { + return this.value; + } + + public String getName() { + return this.name; + } + + public static Status parse(Integer value) { + for (Status status : values()) { + if (status.getValue().equals(value)) { + return status; + } + } + return null; + } + } /** 是否申请售后0否1是 */ private String isAfterSale; @@ -59,7 +118,7 @@ public class Reservation extends BaseEntity { private String meetingNeedType; /** 会议室id */ - private Long meetingId; +// private Long meetingId; /** 摄影需求:1需要,0不需要 */ private String photographType; @@ -68,7 +127,7 @@ public class Reservation extends BaseEntity { private Date startTime; /** 预约-结束时间 */ -// private Date endTime; + private Date endDate; /** 备注 */ private String remake; diff --git a/ics-admin/src/main/java/com/ics/admin/domain/meeting/ReservationDTO.java b/ics-admin/src/main/java/com/ics/admin/domain/meeting/ReservationDTO.java new file mode 100644 index 0000000..aaf1223 --- /dev/null +++ b/ics-admin/src/main/java/com/ics/admin/domain/meeting/ReservationDTO.java @@ -0,0 +1,14 @@ +package com.ics.admin.domain.meeting; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class ReservationDTO { + + private Date nowDate; + + private List reservations; +} diff --git a/ics-admin/src/main/java/com/ics/admin/service/impl/meeting/ReservationServiceImpl.java b/ics-admin/src/main/java/com/ics/admin/service/impl/meeting/ReservationServiceImpl.java index 838847c..643edc7 100644 --- a/ics-admin/src/main/java/com/ics/admin/service/impl/meeting/ReservationServiceImpl.java +++ b/ics-admin/src/main/java/com/ics/admin/service/impl/meeting/ReservationServiceImpl.java @@ -1,7 +1,9 @@ package com.ics.admin.service.impl.meeting; +import java.util.Date; import java.util.List; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -89,4 +91,52 @@ public class ReservationServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + + queryWrapper.eq("room_content_id",reservation.getRoomContentId()); + queryWrapper.gt("start_time",new Date()); + + Date startTime = reservation.getStartTime(); + Date endDate = reservation.getEndDate(); + List reservations = reservationMapper.selectList(queryWrapper); + if (CollUtil.isNotEmpty(reservations)){ + for (Reservation reservation1 : reservations) { + Boolean judge = judge(reservation1.getStartTime(), reservation1.getEndDate(), startTime, endDate); + if (judge){ + return true; + }else { + continue; + } + } + } + return false; + + + } + /** + * 判断一个时间段是否包含另一个时间段,包含:TRUE,不包含:FALSE + * + * @param date1 + * @param date2 + * @param startTime + * @param endTime + * @return + */ + public static Boolean judge(Date date1, Date date2, Date startTime, Date endTime) { + long d1 = date1.getTime(); + long d2 = date2.getTime(); + long v = d2 - d1; + long start = startTime.getTime(); + long end = endTime.getTime(); + if (((d1 - start) <= 0) && ((end - d2) <= 0) || ((d2 - start) >= 0) && ((d1 - end) <= 0)) { + return true; + } + return false; + } + + } diff --git a/ics-admin/src/main/java/com/ics/admin/service/impl/meeting/RoomContentServiceImpl.java b/ics-admin/src/main/java/com/ics/admin/service/impl/meeting/RoomContentServiceImpl.java index 28f3c25..d018d35 100644 --- a/ics-admin/src/main/java/com/ics/admin/service/impl/meeting/RoomContentServiceImpl.java +++ b/ics-admin/src/main/java/com/ics/admin/service/impl/meeting/RoomContentServiceImpl.java @@ -1,12 +1,12 @@ package com.ics.admin.service.impl.meeting; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ics.admin.domain.BuildingDetail; import com.ics.admin.domain.Room; import com.ics.admin.domain.meeting.*; +import com.ics.admin.mapper.meeting.ReservationMapper; import com.ics.admin.service.IBuildingDetailService; import com.ics.admin.service.IRoomService; import com.ics.admin.service.meeting.*; @@ -51,6 +52,9 @@ public class RoomContentServiceImpl extends ServiceImpl roomContents = roomContentMapper.selectRoomContentList(roomContent); List roomItemList = roomContent.getRoomItemList(); List collect = roomItemList.stream().map(item -> { @@ -250,4 +253,38 @@ public class RoomContentServiceImpl extends ServiceImpl selectMeetingRoomRecord(Long meetingRoomId) { + + ArrayList list = new ArrayList<>(); + + // 根据最近七天查询数据 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("room_content_id",meetingRoomId); + queryWrapper.gt("start_time",new Date()); + queryWrapper.groupBy("start_time"); + List reservations = reservationMapper.selectList(queryWrapper); + List collect = reservations.stream().map(item -> { + return item.getStartTime(); + }).collect(Collectors.toList()); + for (Date dateTime : collect) { + ReservationDTO reservationDTO = new ReservationDTO(); + reservationDTO.setNowDate(dateTime); + // 查询会议室记录 + QueryWrapper wrapper = new QueryWrapper<>(); + String dateStr = dateTime.toString(); + queryWrapper.eq("room_content_id",meetingRoomId); + queryWrapper.gt("start_time",dateStr.split(" ")[0] + " 00:00:00"); + queryWrapper.lt("start_time",dateStr.split(" ")[0] + " 23:59:59"); + List reservation = reservationMapper.selectList(wrapper); + for (Reservation reservation1 : reservation) { + reservation1.setStatusValue(reservation1.getStauts().getValue()); + reservation1.setStatusName(reservation1.getStauts().getName()); + } + reservationDTO.setReservations(reservation); + list.add(reservationDTO); + } + return list; + } } diff --git a/ics-admin/src/main/java/com/ics/admin/service/meeting/IReservationService.java b/ics-admin/src/main/java/com/ics/admin/service/meeting/IReservationService.java index b284f27..471fb83 100644 --- a/ics-admin/src/main/java/com/ics/admin/service/meeting/IReservationService.java +++ b/ics-admin/src/main/java/com/ics/admin/service/meeting/IReservationService.java @@ -58,4 +58,6 @@ public interface IReservationService extends IService { * @return 结果 */ int deleteReservationById(Long id); + + boolean selectFreeMeetingRoom(Reservation reservation); } diff --git a/ics-admin/src/main/java/com/ics/admin/service/meeting/IRoomContentService.java b/ics-admin/src/main/java/com/ics/admin/service/meeting/IRoomContentService.java index cd668e5..2a42459 100644 --- a/ics-admin/src/main/java/com/ics/admin/service/meeting/IRoomContentService.java +++ b/ics-admin/src/main/java/com/ics/admin/service/meeting/IRoomContentService.java @@ -1,5 +1,7 @@ package com.ics.admin.service.meeting; +import com.ics.admin.domain.meeting.Reservation; +import com.ics.admin.domain.meeting.ReservationDTO; import com.ics.admin.domain.meeting.RoomContent; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -65,4 +67,6 @@ public interface IRoomContentService extends IService { RoomContent selectInfoById(Long id); Map selectSearchInfoByType(Integer type); + + List selectMeetingRoomRecord(Long meetingRoomId); } diff --git a/ics-admin/src/main/resources/mapper/admin/meeting/ReservationMapper.xml b/ics-admin/src/main/resources/mapper/admin/meeting/ReservationMapper.xml index 8915c75..153b2f7 100644 --- a/ics-admin/src/main/resources/mapper/admin/meeting/ReservationMapper.xml +++ b/ics-admin/src/main/resources/mapper/admin/meeting/ReservationMapper.xml @@ -21,10 +21,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - + @@ -34,7 +34,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT id, room_content_id, user_id, ticket_id, customer_id, title, stauts,serve_id, is_after_sale, oder_number, order_money, cancel_time, cancel_resaon, visit_type, explain_need_type, meeting_need_type, meeting_id, photograph_type, start_time, end_time, delete_flag, create_by, create_time, update_by, update_time, remake FROM tb_reservation + SELECT id, room_content_id, user_id, ticket_id, customer_id, title, stauts,serve_id,end_date, is_after_sale, oder_number, order_money, cancel_time, cancel_resaon, visit_type, explain_need_type, meeting_need_type, photograph_type, start_time, end_time, delete_flag, create_by, create_time, update_by, update_time, remake FROM tb_reservation