diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/EnumFetcherController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/EnumFetcherController.java index c8d2d69..5ff6697 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/EnumFetcherController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/EnumFetcherController.java @@ -26,6 +26,7 @@ public class EnumFetcherController { * @param name * @return 获取枚举全部值 参数以字段大驼峰格式 如:OmsOrderStatus */ + @GetMapping("/enum-values/{name}") public R> getEnumValues(@PathVariable("name") String name) { Map map = enumFetcherService.getEnumValues(name); diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/MeetAttachController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/MeetAttachController.java index e4b8b62..9ac00cd 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/MeetAttachController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/MeetAttachController.java @@ -38,31 +38,26 @@ public class MeetAttachController extends BaseController { private final IMeetAttachService meetAttachService; /** - * 查询会议室增值服务列表 + * 查询分页会议室增值服务列表 */ - @SaCheckPermission("property:attach:list") + // @SaCheckPermission("property:attach:list") @GetMapping("/list") - public TableDataInfo list(MeetAttachBo bo, PageQuery pageQuery) { + public TableDataInfo pageList(MeetAttachBo bo, PageQuery pageQuery) { return meetAttachService.queryPageList(bo, pageQuery); } - - ///** - // * 导出会议室增值服务列表 - // */ - //@SaCheckPermission("property:attach:export") - //@Log(title = "会议室增值服务", businessType = BusinessType.EXPORT) - //@PostMapping("/export") - //public void export(MeetAttachBo bo, HttpServletResponse response) { - // List list = meetAttachService.queryList(bo); - // ExcelUtil.exportExcel(list, "会议室增值服务", MeetAttachVo.class, response); - //} - + /** + * 查询会议室增值服务列表 + */ + @GetMapping("/attachList") + public R> list() { + return R.ok(meetAttachService.queryList(new MeetAttachBo())); + } /** * 获取会议室增值服务详细信息 * * @param id 主键 */ - @SaCheckPermission("property:attach:query") + //@SaCheckPermission("property:attach:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { @@ -83,7 +78,7 @@ public class MeetAttachController extends BaseController { /** * 修改会议室增值服务 */ - @SaCheckPermission("property:attach:edit") + // @SaCheckPermission("property:attach:edit") @Log(title = "会议室增值服务", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -96,7 +91,7 @@ public class MeetAttachController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("property:attach:remove") + // @SaCheckPermission("property:attach:remove") @Log(title = "会议室增值服务", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/MeetBookingController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/MeetBookingController.java index 5f278e4..1523eae 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/MeetBookingController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/MeetBookingController.java @@ -1,5 +1,6 @@ package org.dromara.property.controller; +import java.util.Date; import java.util.List; import lombok.RequiredArgsConstructor; @@ -7,6 +8,8 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.dromara.property.domain.vo.MeetBookingAppointmentVo; +import org.dromara.property.domain.vo.MeetBookingWeekVo; +import org.redisson.api.RList; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -41,25 +44,31 @@ public class MeetBookingController extends BaseController { /** * 查询会议预约记录列表 */ - @SaCheckPermission("property:meetbooking:list") + //@SaCheckPermission("property:meetbooking:list") @GetMapping("/list") public TableDataInfo list(MeetBookingBo bo, PageQuery pageQuery) { return meetBookingService.queryPageList(bo, pageQuery); } /** - * 查询已预约会议预约记录列表 + * 按照日期查询已预约会议预约记录列表 */ @GetMapping("/appointment-list") - public List appointmentList(String appointmentDate) { - return meetBookingService.appointmentList(appointmentDate); + public R> appointmentList(String appointmentDate) { + return R.ok(meetBookingService.appointmentList(appointmentDate)); + } + /** + * 按照会议室Id查询已预约会议预约记录列表 + */ + @GetMapping("/meet-appointment-list") + public R> appointmentIdList(String meetId) { + return R.ok(meetBookingService.appointmentIdList(meetId)); } - /** * 获取会议预约详细信息 * * @param id 主键 */ - @SaCheckPermission("property:meetbooking:query") + //@SaCheckPermission("property:meetbooking:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { @@ -69,7 +78,7 @@ public class MeetBookingController extends BaseController { /** * 新增会议预约 */ - @SaCheckPermission("property:meetbooking:add") + //@SaCheckPermission("property:meetbooking:add") @Log(title = "会议预约", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -80,7 +89,7 @@ public class MeetBookingController extends BaseController { /** * 修改会议预约 */ - @SaCheckPermission("property:meetbooking:edit") + // @SaCheckPermission("property:meetbooking:edit") @Log(title = "会议预约", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttach.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttach.java index b079291..cfa00ba 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttach.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetAttach.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.math.BigDecimal; /** * 会议室增值服务对象 meet_attach @@ -40,7 +41,7 @@ public class MeetAttach extends TenantEntity { /** * 单价 */ - private Long price; + private BigDecimal price; /** * 单位 @@ -55,7 +56,7 @@ public class MeetAttach extends TenantEntity { /** * 状态 */ - private Long state; + private int state; /** * 图片 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetBooking.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetBooking.java index 032fb47..8b65990 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetBooking.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/MeetBooking.java @@ -4,6 +4,8 @@ import org.dromara.common.tenant.core.TenantEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -81,22 +83,27 @@ public class MeetBooking extends TenantEntity { /** * 费用 */ - private Long price; + private BigDecimal price; /** * 是否包含增值服务 */ - private Long attach; + private int attach; /** * 支付状态 */ - private Long payState; + private int payState; /** * 状态 */ - private Long state; + private int state; + + /** + * 描述 + */ + private String descs; /** * 创建人id diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetAttachBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetAttachBo.java index 4e57f8f..8e35e93 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetAttachBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetAttachBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.math.BigDecimal; + /** * 会议室增值服务业务对象 meet_attach * @@ -40,7 +42,7 @@ public class MeetAttachBo extends BaseEntity { * 单价 */ @NotNull(message = "单价不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long price; + private BigDecimal price; /** * 单位 @@ -58,7 +60,7 @@ public class MeetAttachBo extends BaseEntity { * 状态 */ @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long state; + private int state; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetBookingBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetBookingBo.java index baa87fd..93893c9 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetBookingBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetBookingBo.java @@ -8,6 +8,8 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; + +import java.math.BigDecimal; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -80,31 +82,35 @@ public class MeetBookingBo extends BaseEntity { * 参会人数 */ @NotNull(message = "参会人数不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long personSum; + private int personSum; /** * 费用 */ @NotNull(message = "费用不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long price; + private BigDecimal price; /** * 是否包含增值服务 */ @NotNull(message = "是否包含增值服务不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long attach; + private int attach; /** * 支付状态 */ @NotNull(message = "支付状态不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long payState; + private int payState; /** * 状态 */ @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long state; + private int state; + /** + * 描述 + */ + private String descs; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingAppointmentVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingAppointmentVo.java index 4555eae..8274f3b 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingAppointmentVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingAppointmentVo.java @@ -1,13 +1,27 @@ package org.dromara.property.domain.vo; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.property.domain.MeetBooking; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; /** * @Author:yuyongle * @Date:2025/7/7 17:07 * @Description: **/ -public class MeetBookingAppointmentVo { +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = MeetBooking.class) +public class MeetBookingAppointmentVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; /** * 主键 */ @@ -39,4 +53,18 @@ public class MeetBookingAppointmentVo { * 会议室主题 */ private String meetTheme; + + /** + * 预定开始时间 + */ + private Date scheduledStarttime; + + /** + * 预定结束时间 + */ + private Date scheduledEndtime; + /** + * 会议时段 + */ + private String slots; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingVo.java index d1ffdc5..27893a1 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingVo.java @@ -118,6 +118,13 @@ public class MeetBookingVo implements Serializable { @ExcelProperty(value = "状态") private Long state; + /** + * 描述 + */ + + @ExcelProperty(value = "描述") + private String descs; + /** * 创建时间 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingWeekVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingWeekVo.java new file mode 100644 index 0000000..a406028 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetBookingWeekVo.java @@ -0,0 +1,78 @@ +package org.dromara.property.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.property.domain.MeetBooking; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * @Author:yuyongle + * @Date:2025/7/7 17:07 + * @Description:查询本周实体类 + **/ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = MeetBooking.class) +public class MeetBookingWeekVo implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 会议室名称 + */ + @ExcelProperty(value = "会议室名称") + private String name; + + /** + * 会议室id + */ + @ExcelProperty(value = "会议室id") + private Long meetId; + /** + * 所属单位 + */ + @ExcelProperty(value = "所属单位") + private String unit; + /** + * 预定人 + */ + @ExcelProperty(value = "预定人") + private String person; + /** + * 会议室主题 + */ + private String meetTheme; + + /** + * 预定开始时间 + */ + private Date scheduledStarttime; + + /** + * 预定结束时间 + */ + private Date scheduledEndtime; + /** + * 会议时段 + */ + private String slots; + /** + * 星期几 + */ + private String week; + + /** + * 日期 + */ + private String dates; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/TbRoomMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/TbRoomMapper.java index 4b3d12c..bef70dc 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/TbRoomMapper.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/TbRoomMapper.java @@ -4,6 +4,9 @@ import org.dromara.property.domain.TbRoom; import org.dromara.property.domain.vo.TbRoomVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.List; +import java.util.Map; + /** * 房间信息Mapper接口 * @@ -14,4 +17,5 @@ public interface TbRoomMapper extends BaseMapperPlus { //查询房间名称 String queryRoomName(Long roomId); + Map queryRoomNameList(List ids); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IMeetBookingService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IMeetBookingService.java index b41c25e..c9678ea 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IMeetBookingService.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IMeetBookingService.java @@ -6,8 +6,10 @@ import org.dromara.property.domain.vo.MeetBookingVo; import org.dromara.property.domain.bo.MeetBookingBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.property.domain.vo.MeetBookingWeekVo; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Map; @@ -47,7 +49,10 @@ public interface IMeetBookingService { * @return 会议预约列表 */ List queryList(MeetBookingBo bo); - + /** + * 按照会议室Id查询已预约会议预约记录列表 + */ + List appointmentIdList(String meetId); /** * 新增会议预约 * diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetAttachServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetAttachServiceImpl.java index 64be6a0..63113cf 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetAttachServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetAttachServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.property.service.impl; +import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -68,12 +69,12 @@ public class MeetAttachServiceImpl implements IMeetAttachService { */ @Override public List queryList(MeetAttachBo bo) { + bo.setState(0); LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(MeetAttachBo bo) { - Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(MeetAttach::getId); lqw.eq(bo.getMeetId() != null, MeetAttach::getMeetId, bo.getMeetId()); @@ -81,7 +82,7 @@ public class MeetAttachServiceImpl implements IMeetAttachService { lqw.eq(bo.getPrice() != null, MeetAttach::getPrice, bo.getPrice()); lqw.eq(StringUtils.isNotBlank(bo.getUnit()), MeetAttach::getUnit, bo.getUnit()); lqw.eq(StringUtils.isNotBlank(bo.getType()), MeetAttach::getType, bo.getType()); - lqw.eq(bo.getState() != null, MeetAttach::getState, bo.getState()); + lqw.eq(MeetAttach::getState, bo.getState()); return lqw; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetBookingServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetBookingServiceImpl.java index 87f2ce0..cd83c13 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetBookingServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetBookingServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.property.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -13,6 +14,7 @@ import lombok.extern.slf4j.Slf4j; import org.dromara.property.domain.Meet; import org.dromara.property.domain.MeetAttach; import org.dromara.property.domain.vo.MeetBookingAppointmentVo; +import org.dromara.property.domain.vo.MeetBookingWeekVo; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.MeetBookingBo; import org.dromara.property.domain.vo.MeetBookingVo; @@ -21,9 +23,8 @@ import org.dromara.property.mapper.MeetBookingMapper; import org.dromara.property.service.IMeetBookingService; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; /** @@ -78,6 +79,30 @@ public class MeetBookingServiceImpl implements IMeetBookingService { } List meetBookings = baseMapper.selectList(meetBookingLambdaQueryWrapper); List meetBookingAppointmentVoList = BeanUtil.copyToList(meetBookings, MeetBookingAppointmentVo.class); + SimpleDateFormat df = new SimpleDateFormat("HH"); + + meetBookingAppointmentVoList.stream().forEach( + s->{ + String str = df.format(s.getScheduledStarttime()); + int a = Integer.parseInt(str); + if (a >= 0 && a <= 6) { + s.setSlots("凌晨"); + } + if (a > 6 && a <= 12) { + s.setSlots("上午"); + } + if (a > 12 && a <= 13) { + s.setSlots("中午"); + } + if (a > 13 && a <= 18) { + s.setSlots("下午"); + } + if (a > 18 && a <= 24) { + s.setSlots("晚上"); + } + + } + ); return meetBookingAppointmentVoList; } @@ -93,8 +118,38 @@ public class MeetBookingServiceImpl implements IMeetBookingService { return baseMapper.selectVoList(lqw); } + @Override + public List appointmentIdList(String meetId) { + // 计算当前周的起止时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + // 设置为周一 + calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + Date startOfWeek = calendar.getTime(); + // 加6天变为周日 + calendar.add(Calendar.DAY_OF_MONTH, 6); + Date endOfWeek = calendar.getTime(); + // 构建查询条件 + LambdaQueryWrapper bookingLambdaQueryWrapper = new LambdaQueryWrapper<>(); + bookingLambdaQueryWrapper.eq(MeetBooking::getMeetId, meetId) + .ge(MeetBooking::getScheduledStarttime, startOfWeek) + .le(MeetBooking::getScheduledEndtime, endOfWeek); + List meetBookingVoList = baseMapper.selectVoList(bookingLambdaQueryWrapper); + List meetBookingWeekVoList = BeanUtil.copyToList(meetBookingVoList, MeetBookingWeekVo.class); + String[] weekStr={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; + List meetBookingWeekList= new ArrayList<>(); + meetBookingWeekVoList.stream().forEach(s->{ + //设置指定的Date对象不设置默认返回当天的星期 + calendar.setTime(s.getScheduledStarttime()); + //获取当前时间的星期 + int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); + s.setWeek(weekStr[firstDayOfWeek - 1]); + meetBookingWeekList.add(s); + }); + return meetBookingWeekList; + } + private LambdaQueryWrapper buildQueryWrapper(MeetBookingBo bo) { - Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(MeetBooking::getId); lqw.like(StringUtils.isNotBlank(bo.getName()), MeetBooking::getName, bo.getName()); @@ -105,11 +160,11 @@ public class MeetBookingServiceImpl implements IMeetBookingService { lqw.eq(StringUtils.isNotBlank(bo.getPhone()), MeetBooking::getPhone, bo.getPhone()); lqw.eq(bo.getScheduledStarttime() != null, MeetBooking::getScheduledStarttime, bo.getScheduledStarttime()); lqw.eq(bo.getScheduledEndtime() != null, MeetBooking::getScheduledEndtime, bo.getScheduledEndtime()); - lqw.eq(bo.getPersonSum() != null, MeetBooking::getPersonSum, bo.getPersonSum()); - lqw.eq(bo.getPrice() != null, MeetBooking::getPrice, bo.getPrice()); - lqw.eq(bo.getAttach() != null, MeetBooking::getAttach, bo.getAttach()); - lqw.eq(bo.getPayState() != null, MeetBooking::getPayState, bo.getPayState()); - lqw.eq(bo.getState() != null, MeetBooking::getState, bo.getState()); + lqw.eq(ObjectUtil.isNotEmpty(bo.getPersonSum()), MeetBooking::getPersonSum, bo.getPersonSum()); + lqw.eq(ObjectUtil.isNotEmpty(bo.getPrice()), MeetBooking::getPrice, bo.getPrice()); + lqw.eq(ObjectUtil.isNotEmpty(bo.getAttach()), MeetBooking::getAttach, bo.getAttach()); + lqw.eq(ObjectUtil.isNotEmpty(bo.getPayState()), MeetBooking::getPayState, bo.getPayState()); + lqw.eq(ObjectUtil.isNotEmpty(bo.getState()), MeetBooking::getState, bo.getState()); return lqw; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java index e6ea253..4906118 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MeetServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.property.service.impl; +import cn.hutool.core.util.ObjectUtil; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,7 +10,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.property.domain.MeetBooking; import org.dromara.property.domain.vo.ResidentPersonVo; +import org.dromara.property.mapper.MeetBookingMapper; import org.dromara.property.mapper.ResidentPersonMapper; import org.dromara.property.mapper.TbRoomMapper; import org.springframework.stereotype.Service; @@ -21,10 +24,11 @@ import org.dromara.property.mapper.MeetMapper; import org.dromara.property.service.IMeetService; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.*; import java.util.stream.Collectors; /** @@ -41,6 +45,7 @@ public class MeetServiceImpl implements IMeetService { private final MeetMapper baseMapper; private final ResidentPersonMapper residentPersonMapper; private final TbRoomMapper roomMapper; + private final MeetBookingMapper meetbookMapper; /** * 查询会议室管理 @@ -91,10 +96,54 @@ public class MeetServiceImpl implements IMeetService { */ @Override public List queryList(MeetBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); + //查询当前日期和当前时间段会议记录表的会议id + LambdaQueryWrapper bookLambdaQueryWrapper = new LambdaQueryWrapper<>(); + String[] times = bo.getOpenHours().split("-"); + String openStartTimeStr = times[0]; + String openEndTimeStr = times[1]; + LocalDate appointmentTime = LocalDate.parse(bo.getAppointmentTime()); + LocalTime startTime = LocalTime.parse(openStartTimeStr, DateTimeFormatter.ofPattern("HH:mm")); + LocalTime EndTime = LocalTime.parse(openEndTimeStr, DateTimeFormatter.ofPattern("HH:mm")); + LocalDateTime startDateTime = LocalDateTime.of(appointmentTime, startTime ); + LocalDateTime endDateTime = LocalDateTime.of(appointmentTime, EndTime); + bookLambdaQueryWrapper.ge(MeetBooking::getScheduledStarttime, startDateTime) + .le(MeetBooking::getScheduledEndtime, endDateTime); + List meetBookings = meetbookMapper.selectList(bookLambdaQueryWrapper); + List meetIdList = meetBookings.stream().map(MeetBooking::getMeetId).collect(Collectors.toList()); + LambdaQueryWrapper lqw = buildQueryListWrapper(bo,meetIdList); return baseMapper.selectVoList(lqw); } + /** + * + * @param bo + * @return + */ + private LambdaQueryWrapper buildQueryListWrapper(MeetBo bo,List meetIdList) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(Meet::getId); + lqw.like(StringUtils.isNotBlank(bo.getName()), Meet::getName, bo.getName()); + lqw.notIn(ObjectUtil.isNotEmpty(meetIdList),Meet::getId,meetIdList); + lqw.eq(StringUtils.isNotBlank(bo.getLocation()), Meet::getLocation, bo.getLocation()); + lqw.le(bo.getPersonNumber() != null, Meet::getPersonNumber, bo.getPersonNumber()); + lqw.eq(bo.getBaseService() != null, Meet::getBaseService, bo.getBaseService()); + if (StringUtils.isNotBlank(bo.getOpenHours())) { + String[] times = bo.getOpenHours().split("-"); + if (times.length == 2) { + String openStartTimeStr = times[0]; + String openEndTimeStr = times[1]; + + String nowTime = LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm")); + if (nowTime.compareTo(openStartTimeStr) >= 0 && nowTime.compareTo(openEndTimeStr) <= 0) { + lqw.ge(Meet::getOpenHours, openStartTimeStr) + .le(Meet::getOpenHours, openEndTimeStr); + } + } + } + lqw.eq(bo.getBasePrice() != null, Meet::getBasePrice, bo.getBasePrice()); + lqw.eq(bo.getAttach() != null, Meet::getAttach, bo.getAttach()); + return lqw; + } private LambdaQueryWrapper buildQueryWrapper(MeetBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); @@ -108,6 +157,8 @@ public class MeetServiceImpl implements IMeetService { return lqw; } + + /** * 新增会议室管理 * @@ -169,15 +220,15 @@ public class MeetServiceImpl implements IMeetService { */ @Override public Map getMeetSelectDate(String type){ - switch (type) { case "getMeetName": - return getList().stream() - .collect(Collectors.toMap( - Meet::getId, - Meet::getName, - (oldValue, newValue) -> oldValue - )); + Map meetMap = new HashMap<>(); + for (Meet meet : getList()) { + // 如果键不存在,则直接放入;如果存在,则保留第一个遇到的值 + meetMap.putIfAbsent("value", meet.getId()); + meetMap.putIfAbsent("name", meet.getName()); + } + return meetMap; case "getMeetPrincipals": return getList().stream() .collect(Collectors.toMap( diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/TbRoomMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/TbRoomMapper.xml index 79392cb..fd50b64 100644 --- a/ruoyi-modules/Property/src/main/resources/mapper/Property/TbRoomMapper.xml +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/TbRoomMapper.xml @@ -14,4 +14,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" inner join tb_community c on r.community_id=c.id where r.id=#{roomId} + +