diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java index e9f8086c..207924a2 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java @@ -25,6 +25,7 @@ public interface RemoteUserService { * @return 结果 */ LoginUser getUserInfo(String username, String tenantId) throws UserException; + /** * 通过用户id查询用户信息 * @@ -196,6 +197,10 @@ public interface RemoteUserService { */ Map selectPostNamesByIds(List postIds); - Map seelectOrgcount(); + Map seelectOrgcount(); + /** + * 查询用户列表 + */ + List selectUserList(List userIds); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerFeedbacksController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerFeedbacksController.java index 92c12061..bb26c674 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerFeedbacksController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerFeedbacksController.java @@ -40,7 +40,7 @@ public class CustomerFeedbacksController extends BaseController { /** * 查询客户服务-意见反馈列表 */ - @SaCheckPermission("system:feedbacks:list") + // @SaCheckPermission("system:feedbacks:list") @GetMapping("/list") public TableDataInfo list(CustomerFeedbacksBo bo, PageQuery pageQuery) { return customerFeedbacksService.queryPageList(bo, pageQuery); @@ -62,7 +62,9 @@ public class CustomerFeedbacksController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("system:feedbacks:query") + // + // + // @SaCheckPermission("system:feedbacks:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CustomerFeedbacks.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CustomerFeedbacks.java index 8de2dee7..f0f9a840 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CustomerFeedbacks.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CustomerFeedbacks.java @@ -30,7 +30,7 @@ public class CustomerFeedbacks extends TenantEntity { /** * 反馈类型(0保修1保洁2会议) */ - private String feedbackType; + private Long feedbackType; /** * 反馈人 @@ -58,7 +58,7 @@ public class CustomerFeedbacks extends TenantEntity { private String feedbackImg; /** - * 是否转至工单 + * 工单id */ private Long orderId; /** diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Meet.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Meet.java index f321bb21..ebd38779 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Meet.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Meet.java @@ -94,9 +94,13 @@ public class Meet extends TenantEntity { private String appointmentTime; /** - * 开放时段 + * 开放开始时段 */ - private String openHours; + private String openStartHours; + /** + * 开放结束时段 + */ + private String openEndHours; /** * 状态(0启用,1禁用) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java index 99a7d889..932b39b5 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java @@ -104,7 +104,7 @@ public class ServiceWorkOrders extends TenantEntity { */ private String orderImgUrl; /** - * 上报类型 + * 上报类型(1电话上报2现场上报,3系统上报) */ private String reportingType; /** diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CustomerFeedbacksBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CustomerFeedbacksBo.java index 6228455d..8e995092 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CustomerFeedbacksBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CustomerFeedbacksBo.java @@ -29,8 +29,8 @@ public class CustomerFeedbacksBo extends BaseEntity { /** * 反馈类型(0保修1保洁2会议) */ - @NotBlank(message = "反馈类型(0保修1保洁2会议)不能为空", groups = { AddGroup.class, EditGroup.class }) - private String feedbackType; + @NotNull (message = "反馈类型(0保修1保洁2会议)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long feedbackType; /** * 反馈人 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetBo.java index 1c4cd02a..20eb0676 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/MeetBo.java @@ -101,9 +101,13 @@ public class MeetBo extends BaseEntity { private String appointmentTime; /** - * 开放时段 + * 开放开始时段 */ - private String openHours; + private String openStartHours; + /** + * 开放结束时段 + */ + private String openEndHours; /** * 状态(0启用,1禁用) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CustomerFeedbacksVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CustomerFeedbacksVo.java index ca99a5e4..7784ed58 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CustomerFeedbacksVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CustomerFeedbacksVo.java @@ -33,16 +33,26 @@ public class CustomerFeedbacksVo implements Serializable { private Long id; /** - * 反馈类型(0保修1保洁2会议) + * 反馈类型(工单类型) */ - @ExcelProperty(value = "反馈类型(0保修1保洁2会议)") - private String feedbackType; + @ExcelProperty(value = "反馈类型(工单类型)") + private Long feedbackType; + /** + * 反馈类型名称(工单类型名称) + */ + @ExcelProperty(value = "反馈类型名称(工单类型名称)") + private String feedbackTypeName; /** * 反馈人 */ @ExcelProperty(value = "反馈人") private Long feedbackPersion; + /** + * 反馈人名称 + */ + @ExcelProperty(value = "反馈人名称") + private String feedbackPersionName; /** * 反馈人电话 @@ -67,7 +77,10 @@ public class CustomerFeedbacksVo implements Serializable { */ @ExcelProperty(value = "反馈图片") private String feedbackImg; - + /** + * 工单id + */ + private Long orderId; /** * 是否转至工单 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetVo.java index a0b2335c..902cec12 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/MeetVo.java @@ -59,9 +59,13 @@ public class MeetVo implements Serializable { @ExcelProperty(value = "位置名称") private String locationName; /** - * 开放时段 + * 开放开始时段 */ - private String openHours; + private String openStartHours; + /** + * 开放结束时段 + */ + private String openEndHours; /** * 容纳人数 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerFeedbacksServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerFeedbacksServiceImpl.java index 4756ee2f..b8ff931e 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerFeedbacksServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerFeedbacksServiceImpl.java @@ -1,5 +1,9 @@ package org.dromara.property.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -9,17 +13,31 @@ 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.common.satoken.utils.LoginHelper; import org.dromara.property.domain.CustomerFeedbacks; +import org.dromara.property.domain.ServiceWorkOrders; +import org.dromara.property.domain.ServiceWorkOrdersRecord; +import org.dromara.property.domain.ServiceWorkOrdersType; import org.dromara.property.domain.bo.CustomerFeedbacksBo; +import org.dromara.property.domain.bo.ServiceWorkOrdersBo; import org.dromara.property.domain.vo.CustomerFeedbacksVo; +import org.dromara.property.domain.vo.CustomerNoticesVo; import org.dromara.property.mapper.CustomerFeedbacksMapper; +import org.dromara.property.mapper.ServiceWorkOrdersMapper; +import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper; +import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper; import org.dromara.property.service.ICustomerFeedbacksService; +import org.dromara.system.api.RemoteUserService; +import org.dromara.system.api.domain.vo.RemoteUserVo; +import org.dromara.system.api.model.LoginUser; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.stream.Collectors; /** * 客户服务-意见反馈Service业务层处理 @@ -33,6 +51,11 @@ import java.util.Collection; public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService { private final CustomerFeedbacksMapper baseMapper; + private final ServiceWorkOrdersMapper serviceWorkOrdersMapper; + private final ServiceWorkOrdersTypeMapper serviceWorkOrdersTypeMapper; + private final ServiceWorkOrdersRecordMapper serviceWorkOrdersRecordMapper; + @DubboReference + private RemoteUserService remoteUserService; /** * 查询客户服务-意见反馈 @@ -42,7 +65,12 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService { */ @Override public CustomerFeedbacksVo queryById(Long id){ - return baseMapper.selectVoById(id); + CustomerFeedbacksVo customerFeedbacksVo = baseMapper.selectVoById(id); + ServiceWorkOrdersType serviceWorkOrdersType = serviceWorkOrdersTypeMapper.selectById(customerFeedbacksVo.getFeedbackType()); + customerFeedbacksVo.setFeedbackTypeName(StringUtils.isNotBlank(serviceWorkOrdersType.getOrderTypeName())?serviceWorkOrdersType.getOrderTypeName():null); + String nikName = remoteUserService.selectNicknameById(customerFeedbacksVo.getFeedbackPersion()); + customerFeedbacksVo.setFeedbackPersionName(nikName); + return customerFeedbacksVo; } /** @@ -56,9 +84,44 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService { public TableDataInfo queryPageList(CustomerFeedbacksBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + if (CollUtil.isNotEmpty(result.getRecords())) { + //收集类型为集合 + List feedbackTypeIds = result.getRecords().stream().map(CustomerFeedbacksVo::getFeedbackType).toList(); + //查询工单类型 + List serviceWorkOrdersTypes = serviceWorkOrdersTypeMapper.selectList( + Wrappers.lambdaQuery() + .in(ServiceWorkOrdersType::getId, feedbackTypeIds) + ); + // 提取发布人ID + List uerIds = result.getRecords().stream() + .filter(vo -> ObjectUtil.isNotEmpty(vo.getFeedbackPersion())) + .map(CustomerFeedbacksVo::getFeedbackPersion) + .distinct() + .collect(Collectors.toList()); + List remoteUserVos = remoteUserService.selectListByIds(uerIds); + result.getRecords().stream().forEach(s -> { + assembly(s,serviceWorkOrdersTypes,remoteUserVos); + }); + } return TableDataInfo.build(result); } + /** + * + * @param customerFeedbacksVo 意见反馈返回信息 + * + */ + private void assembly(CustomerFeedbacksVo customerFeedbacksVo,List serviceWorkOrdersTypes,List remoteUserVos){ + if(CollUtil.isNotEmpty(remoteUserVos)){ + RemoteUserVo remoteUserVo = remoteUserVos.stream() + .filter(vo -> vo.getUserId() != null && vo.getUserId().equals(customerFeedbacksVo.getFeedbackPersion())).findFirst().orElse(null); + customerFeedbacksVo.setFeedbackPersionName(StringUtils.isNotBlank(remoteUserVo.getNickName())?remoteUserVo.getNickName():null); + } + if (CollUtil.isNotEmpty(serviceWorkOrdersTypes)) { + ServiceWorkOrdersType serviceWorkOrdersType = serviceWorkOrdersTypes.stream().filter(vo -> vo.getId() != null && vo.getId().equals(customerFeedbacksVo.getFeedbackType())).findFirst().orElse(null); + customerFeedbacksVo.setFeedbackTypeName(StringUtils.isNotBlank(serviceWorkOrdersType.getOrderTypeName())?serviceWorkOrdersType.getOrderTypeName():null); + } + } /** * 查询符合条件的客户服务-意见反馈列表 * @@ -75,7 +138,7 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(CustomerFeedbacks::getId); - lqw.eq(StringUtils.isNotBlank(bo.getFeedbackType()), CustomerFeedbacks::getFeedbackType, bo.getFeedbackType()); + lqw.eq(ObjectUtil.isNotNull(bo.getFeedbackType()), CustomerFeedbacks::getFeedbackType, bo.getFeedbackType()); lqw.eq(bo.getFeedbackPersion() != null, CustomerFeedbacks::getFeedbackPersion, bo.getFeedbackPersion()); lqw.eq(StringUtils.isNotBlank(bo.getFeedbackPersionPhone()), CustomerFeedbacks::getFeedbackPersionPhone, bo.getFeedbackPersionPhone()); lqw.eq(StringUtils.isNotBlank(bo.getFeedbackContent()), CustomerFeedbacks::getFeedbackContent, bo.getFeedbackContent()); @@ -116,7 +179,7 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService { @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(CustomerFeedbacksBo bo) { CustomerFeedbacks update = MapstructUtils.convert(bo, CustomerFeedbacks.class); - validEntityBeforeSave(update); + validEntityBeforeUpdate(update); return baseMapper.updateById(update) > 0; } @@ -126,6 +189,33 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService { private void validEntityBeforeSave(CustomerFeedbacks entity){ //TODO 做一些数据校验,如唯一约束 } + /** + * 保存前的数据校验 + */ + private void validEntityBeforeUpdate(CustomerFeedbacks entity){ + //TODO 做一些数据校验,如唯一约束 + if(entity.getIsWorkOrder().equals("0")&& ObjectUtil.isEmpty(entity.getOrderId())){ + ServiceWorkOrders serviceWorkOrders = new ServiceWorkOrders(); + serviceWorkOrders.setOrderName("意见反馈转工单"); + LoginUser user = LoginHelper.getLoginUser(); + serviceWorkOrders.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr()); + serviceWorkOrders.setStatus("0"); + serviceWorkOrders.setRemark(entity.getFeedbackContent()); + serviceWorkOrders.setType(entity.getFeedbackType()); + serviceWorkOrders.setInitiatorPeople(user.getNickname()); + serviceWorkOrders.setReportingType("3"); + serviceWorkOrders.setProcessingWeight("1"); + boolean flag = serviceWorkOrdersMapper.insert(serviceWorkOrders) > 0; + if (flag) { + ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord(); + serviceWorkOrdersRecord.setOrderId(serviceWorkOrders.getId()); + serviceWorkOrdersRecord.setStatus(serviceWorkOrders.getStatus()); + //serviceWorkOrdersRecord.setHandler(add.getHandler()); + serviceWorkOrdersRecordMapper.insert(serviceWorkOrdersRecord); + } + entity.setOrderId(serviceWorkOrders.getId()); + } + } /** * 校验并批量删除客户服务-意见反馈信息 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/DepotLogServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/DepotLogServiceImpl.java index cca2a186..2f887bc1 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/DepotLogServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/DepotLogServiceImpl.java @@ -88,14 +88,14 @@ public class DepotLogServiceImpl implements IDepotLogService { Map assetNamesByIds = assetsMapper.selectList( new LambdaQueryWrapper() .select(Asset::getId, Asset::getName) - .in(Asset::getId, assetIds) + .in(CollUtil.isNotEmpty(assetIds),Asset::getId, assetIds) ).stream() .collect(Collectors.toMap(Asset::getId, Asset::getName)); //批量获取厂库名 Map depotNamesByIds = depotMapper.selectList( new LambdaQueryWrapper() .select(Depot::getId, Depot::getDepotName) - .in(Depot::getId, depotIds) + .in(CollUtil.isNotEmpty(depotIds),Depot::getId, depotIds) ).stream() .collect(Collectors.toMap(Depot::getId, Depot::getDepotName)); result.getRecords().stream().forEach(s -> { diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/EnumFetcherServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/EnumFetcherServiceImpl.java index 9c36c099..bf7b650a 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/EnumFetcherServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/EnumFetcherServiceImpl.java @@ -1,18 +1,18 @@ package org.dromara.property.service.impl; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.property.domain.enums.BookingPayStatusEnum; import org.dromara.property.domain.enums.BookingStatusEnum; import org.dromara.property.domain.enums.MeetAttachStatusEnum; import org.dromara.property.domain.enums.MeetStatusEnum; import org.dromara.property.service.*; +import org.dromara.system.api.RemoteUserService; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -31,6 +31,8 @@ public class EnumFetcherServiceImpl implements EnumFetcherService { private IMeetBookingService meetBookingService; @Autowired private IServiceWorkOrdersService serviceWorkOrdersService; + @DubboReference + private RemoteUserService remoteUserService; @Override public List> getEnumValues(String type) { @@ -55,11 +57,15 @@ public class EnumFetcherServiceImpl implements EnumFetcherService { return getMeetBookingStatus(); case "getServiceWorkOrdersHandler": return serviceWorkOrdersService.getServiceWorkOrdersHandler(type); + case "getAccount": + return getAccount(); default: throw new IllegalArgumentException("Unknown type: " + type); } } - +/** + * 获取会议室状态枚举接口 + */ List> getMeetStatus() { return Arrays.stream(MeetStatusEnum.values()) .map(e -> { @@ -104,4 +110,18 @@ public class EnumFetcherServiceImpl implements EnumFetcherService { }) .collect(Collectors.toList()); } + /** + * 获取账户信息 + */ + List> getAccount() { + List remoteUserVos = remoteUserService.selectUserList(new ArrayList<>()); + return remoteUserVos.stream() + .map(e -> { + Map map = new HashMap<>(); + map.put("value", e.getUserName()); + map.put("name", e.getNickName()); + return map; + }) + .collect(Collectors.toList()); + } } 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 70961cd2..26bcdef0 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,6 +1,8 @@ package org.dromara.property.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -15,6 +17,8 @@ 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.dromara.system.api.RemoteUserService; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.MeetBo; @@ -29,6 +33,7 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -46,6 +51,8 @@ public class MeetServiceImpl implements IMeetService { private final ResidentPersonMapper residentPersonMapper; private final TbRoomMapper roomMapper; private final MeetBookingMapper meetbookMapper; + @DubboReference + private RemoteUserService remoteUserService; /** * 查询会议室管理 @@ -54,12 +61,17 @@ public class MeetServiceImpl implements IMeetService { * @return 会议室管理 */ @Override - public MeetVo queryById(Long id){ - MeetVo meetVo= baseMapper.selectVoById(id); - ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(meetVo.getPrincipals()); - if(ObjectUtil.isNotEmpty(residentPersonVo)){ - meetVo.setPrincipalsName(residentPersonVo.getUserName()); - meetVo.setPhoneNo(residentPersonVo.getPhone()); + public MeetVo queryById(Long id) { + MeetVo meetVo = baseMapper.selectVoById(id); +// ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(meetVo.getPrincipals()); +// if(ObjectUtil.isNotEmpty(residentPersonVo)){ +// meetVo.setPrincipalsName(residentPersonVo.getUserName()); +// meetVo.setPhoneNo(residentPersonVo.getPhone()); +// } + RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(meetVo.getPrincipals())); + if (ObjectUtil.isNotEmpty(userInfo)) { + meetVo.setPrincipalsName(userInfo.getNickName()); + meetVo.setPhoneNo(userInfo.getPhonenumber()); } String locationName = roomMapper.queryRoomName(Long.valueOf(meetVo.getLocation())); meetVo.setLocationName(locationName); @@ -90,19 +102,17 @@ public class MeetServiceImpl implements IMeetService { public List queryList(MeetBo 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 ); + LocalTime startTime = LocalTime.parse(bo.getOpenEndHours(), DateTimeFormatter.ofPattern("HH:mm")); + LocalTime EndTime = LocalTime.parse(bo.getOpenEndHours(), DateTimeFormatter.ofPattern("HH:mm")); + LocalDateTime startDateTime = LocalDateTime.of(appointmentTime, startTime); LocalDateTime endDateTime = LocalDateTime.of(appointmentTime, EndTime); - bookLambdaQueryWrapper.ge(MeetBooking::getScheduledStarttime, startDateTime) + 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); + LambdaQueryWrapper lqw = buildQueryListWrapper(bo, meetIdList); return baseMapper.selectVoList(lqw); } @@ -111,31 +121,32 @@ public class MeetServiceImpl implements IMeetService { * @param bo * @return */ - private LambdaQueryWrapper buildQueryListWrapper(MeetBo bo,List meetIdList) { + 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.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(StringUtils.isNotBlank(bo.getMeetingRoomType()), Meet::getMeetingRoomType, bo.getMeetingRoomType()); + lqw.ge(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); - } - } + // 修复:正确处理时间段重叠逻辑 + // 查询条件时间段与数据库存储时间段有重叠的会议室 + if (bo.getOpenStartHours() != null && bo.getOpenEndHours() != null) { + LocalTime queryStartTime = LocalTime.parse(bo.getOpenStartHours(), DateTimeFormatter.ofPattern("HH:mm")); + LocalTime queryEndTime = LocalTime.parse(bo.getOpenEndHours(), DateTimeFormatter.ofPattern("HH:mm")); + + // 时间段重叠条件: dbStart <= queryEnd AND dbEnd >= queryStart + lqw.le(Meet::getOpenStartHours, queryEndTime) + .ge(Meet::getOpenEndHours, queryStartTime); } + 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(); @@ -151,7 +162,6 @@ public class MeetServiceImpl implements IMeetService { } - /** * 新增会议室管理 * @@ -189,7 +199,7 @@ public class MeetServiceImpl implements IMeetService { * 保存前的数据校验 */ @Transactional(rollbackFor = Exception.class) - public void validEntityBeforeSave(Meet entity){ + public void validEntityBeforeSave(Meet entity) { //TODO 做一些数据校验,如唯一约束 } @@ -203,16 +213,17 @@ public class MeetServiceImpl implements IMeetService { @Override @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; } + /** * 下拉接口数据 */ @Override - public List> getMeetSelectDate(String type){ + public List> getMeetSelectDate(String type) { switch (type) { case "getMeetName": List> result = new ArrayList<>(); @@ -239,7 +250,8 @@ public class MeetServiceImpl implements IMeetService { throw new IllegalArgumentException("Unknown type: " + type); } } - public List getList(){ + + public List getList() { LambdaQueryWrapper meetQueryWrapper = new LambdaQueryWrapper<>(); return baseMapper.selectList(meetQueryWrapper); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java index b6cfb5ef..9fd2b2e2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java @@ -490,5 +490,14 @@ public class RemoteUserServiceImpl implements RemoteUserService { return hashMap; } - + @Override + public List selectUserList(List userIds) { + List list = userMapper.selectList( + new LambdaQueryWrapper() + .select() + .in(CollUtil.isNotEmpty(userIds),SysUser::getUserId, userIds) + ).stream() + .collect(Collectors.toList()); + return BeanUtil.copyToList(list, RemoteUserVo.class); + } }