修改了工单bug
All checks were successful
Build and Push to Target Registry / 构建并推送镜像到目标仓库 (push) Successful in 6m27s

This commit is contained in:
yuyongle 2025-08-21 14:11:51 +08:00
parent 0385bef3f4
commit db9b1e1cd3
14 changed files with 225 additions and 62 deletions

View File

@ -25,6 +25,7 @@ public interface RemoteUserService {
* @return 结果 * @return 结果
*/ */
LoginUser getUserInfo(String username, String tenantId) throws UserException; LoginUser getUserInfo(String username, String tenantId) throws UserException;
/** /**
* 通过用户id查询用户信息 * 通过用户id查询用户信息
* *
@ -196,6 +197,10 @@ public interface RemoteUserService {
*/ */
Map<Long, String> selectPostNamesByIds(List<Long> postIds); Map<Long, String> selectPostNamesByIds(List<Long> postIds);
Map<String ,Integer> seelectOrgcount(); Map<String, Integer> seelectOrgcount();
/**
* 查询用户列表
*/
List<RemoteUserVo> selectUserList(List<Long> userIds);
} }

View File

@ -40,7 +40,7 @@ public class CustomerFeedbacksController extends BaseController {
/** /**
* 查询客户服务-意见反馈列表 * 查询客户服务-意见反馈列表
*/ */
@SaCheckPermission("system:feedbacks:list") // @SaCheckPermission("system:feedbacks:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<CustomerFeedbacksVo> list(CustomerFeedbacksBo bo, PageQuery pageQuery) { public TableDataInfo<CustomerFeedbacksVo> list(CustomerFeedbacksBo bo, PageQuery pageQuery) {
return customerFeedbacksService.queryPageList(bo, pageQuery); return customerFeedbacksService.queryPageList(bo, pageQuery);
@ -62,7 +62,9 @@ public class CustomerFeedbacksController extends BaseController {
* *
* @param id 主键 * @param id 主键
*/ */
@SaCheckPermission("system:feedbacks:query") //
//
// @SaCheckPermission("system:feedbacks:query")
@GetMapping("/{id}") @GetMapping("/{id}")
public R<CustomerFeedbacksVo> getInfo(@NotNull(message = "主键不能为空") public R<CustomerFeedbacksVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) { @PathVariable("id") Long id) {

View File

@ -30,7 +30,7 @@ public class CustomerFeedbacks extends TenantEntity {
/** /**
* 反馈类型(0保修1保洁2会议) * 反馈类型(0保修1保洁2会议)
*/ */
private String feedbackType; private Long feedbackType;
/** /**
* 反馈人 * 反馈人
@ -58,7 +58,7 @@ public class CustomerFeedbacks extends TenantEntity {
private String feedbackImg; private String feedbackImg;
/** /**
* 是否转至工单 * 工单id
*/ */
private Long orderId; private Long orderId;
/** /**

View File

@ -94,9 +94,13 @@ public class Meet extends TenantEntity {
private String appointmentTime; private String appointmentTime;
/** /**
* 开放时段 * 开放开始时段
*/ */
private String openHours; private String openStartHours;
/**
* 开放结束时段
*/
private String openEndHours;
/** /**
* 状态(0启用,1禁用) * 状态(0启用,1禁用)

View File

@ -104,7 +104,7 @@ public class ServiceWorkOrders extends TenantEntity {
*/ */
private String orderImgUrl; private String orderImgUrl;
/** /**
* 上报类型 * 上报类型(1电话上报2现场上报,3系统上报)
*/ */
private String reportingType; private String reportingType;
/** /**

View File

@ -29,8 +29,8 @@ public class CustomerFeedbacksBo extends BaseEntity {
/** /**
* 反馈类型(0保修1保洁2会议) * 反馈类型(0保修1保洁2会议)
*/ */
@NotBlank(message = "反馈类型(0保修1保洁2会议)不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull (message = "反馈类型(0保修1保洁2会议)不能为空", groups = { AddGroup.class, EditGroup.class })
private String feedbackType; private Long feedbackType;
/** /**
* 反馈人 * 反馈人

View File

@ -101,9 +101,13 @@ public class MeetBo extends BaseEntity {
private String appointmentTime; private String appointmentTime;
/** /**
* 开放时段 * 开放开始时段
*/ */
private String openHours; private String openStartHours;
/**
* 开放结束时段
*/
private String openEndHours;
/** /**
* 状态(0启用,1禁用) * 状态(0启用,1禁用)

View File

@ -33,16 +33,26 @@ public class CustomerFeedbacksVo implements Serializable {
private Long id; private Long id;
/** /**
* 反馈类型(0保修1保洁2会议) * 反馈类型(工单类型)
*/ */
@ExcelProperty(value = "反馈类型(0保修1保洁2会议)") @ExcelProperty(value = "反馈类型(工单类型)")
private String feedbackType; private Long feedbackType;
/**
* 反馈类型名称(工单类型名称)
*/
@ExcelProperty(value = "反馈类型名称(工单类型名称)")
private String feedbackTypeName;
/** /**
* 反馈人 * 反馈人
*/ */
@ExcelProperty(value = "反馈人") @ExcelProperty(value = "反馈人")
private Long feedbackPersion; private Long feedbackPersion;
/**
* 反馈人名称
*/
@ExcelProperty(value = "反馈人名称")
private String feedbackPersionName;
/** /**
* 反馈人电话 * 反馈人电话
@ -67,7 +77,10 @@ public class CustomerFeedbacksVo implements Serializable {
*/ */
@ExcelProperty(value = "反馈图片") @ExcelProperty(value = "反馈图片")
private String feedbackImg; private String feedbackImg;
/**
* 工单id
*/
private Long orderId;
/** /**
* 是否转至工单 * 是否转至工单
*/ */

View File

@ -59,9 +59,13 @@ public class MeetVo implements Serializable {
@ExcelProperty(value = "位置名称") @ExcelProperty(value = "位置名称")
private String locationName; private String locationName;
/** /**
* 开放时段 * 开放开始时段
*/ */
private String openHours; private String openStartHours;
/**
* 开放结束时段
*/
private String openEndHours;
/** /**
* 容纳人数 * 容纳人数

View File

@ -1,5 +1,9 @@
package org.dromara.property.service.impl; 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.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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 com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.CustomerFeedbacks; 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.CustomerFeedbacksBo;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
import org.dromara.property.domain.vo.CustomerFeedbacksVo; 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.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.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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
import java.util.stream.Collectors;
/** /**
* 客户服务-意见反馈Service业务层处理 * 客户服务-意见反馈Service业务层处理
@ -33,6 +51,11 @@ import java.util.Collection;
public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService { public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService {
private final CustomerFeedbacksMapper baseMapper; 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 @Override
public CustomerFeedbacksVo queryById(Long id){ 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<CustomerFeedbacksVo> queryPageList(CustomerFeedbacksBo bo, PageQuery pageQuery) { public TableDataInfo<CustomerFeedbacksVo> queryPageList(CustomerFeedbacksBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CustomerFeedbacks> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<CustomerFeedbacks> lqw = buildQueryWrapper(bo);
Page<CustomerFeedbacksVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<CustomerFeedbacksVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
if (CollUtil.isNotEmpty(result.getRecords())) {
//收集类型为集合
List<Long> feedbackTypeIds = result.getRecords().stream().map(CustomerFeedbacksVo::getFeedbackType).toList();
//查询工单类型
List<ServiceWorkOrdersType> serviceWorkOrdersTypes = serviceWorkOrdersTypeMapper.selectList(
Wrappers.<ServiceWorkOrdersType>lambdaQuery()
.in(ServiceWorkOrdersType::getId, feedbackTypeIds)
);
// 提取发布人ID
List<Long> uerIds = result.getRecords().stream()
.filter(vo -> ObjectUtil.isNotEmpty(vo.getFeedbackPersion()))
.map(CustomerFeedbacksVo::getFeedbackPersion)
.distinct()
.collect(Collectors.toList());
List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(uerIds);
result.getRecords().stream().forEach(s -> {
assembly(s,serviceWorkOrdersTypes,remoteUserVos);
});
}
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
/**
*
* @param customerFeedbacksVo 意见反馈返回信息
*
*/
private void assembly(CustomerFeedbacksVo customerFeedbacksVo,List<ServiceWorkOrdersType> serviceWorkOrdersTypes,List<RemoteUserVo> 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<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CustomerFeedbacks> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<CustomerFeedbacks> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(CustomerFeedbacks::getId); 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(bo.getFeedbackPersion() != null, CustomerFeedbacks::getFeedbackPersion, bo.getFeedbackPersion());
lqw.eq(StringUtils.isNotBlank(bo.getFeedbackPersionPhone()), CustomerFeedbacks::getFeedbackPersionPhone, bo.getFeedbackPersionPhone()); lqw.eq(StringUtils.isNotBlank(bo.getFeedbackPersionPhone()), CustomerFeedbacks::getFeedbackPersionPhone, bo.getFeedbackPersionPhone());
lqw.eq(StringUtils.isNotBlank(bo.getFeedbackContent()), CustomerFeedbacks::getFeedbackContent, bo.getFeedbackContent()); lqw.eq(StringUtils.isNotBlank(bo.getFeedbackContent()), CustomerFeedbacks::getFeedbackContent, bo.getFeedbackContent());
@ -116,7 +179,7 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(CustomerFeedbacksBo bo) { public Boolean updateByBo(CustomerFeedbacksBo bo) {
CustomerFeedbacks update = MapstructUtils.convert(bo, CustomerFeedbacks.class); CustomerFeedbacks update = MapstructUtils.convert(bo, CustomerFeedbacks.class);
validEntityBeforeSave(update); validEntityBeforeUpdate(update);
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
@ -126,6 +189,33 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService {
private void validEntityBeforeSave(CustomerFeedbacks entity){ private void validEntityBeforeSave(CustomerFeedbacks entity){
//TODO 做一些数据校验,如唯一约束 //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());
}
}
/** /**
* 校验并批量删除客户服务-意见反馈信息 * 校验并批量删除客户服务-意见反馈信息

View File

@ -88,14 +88,14 @@ public class DepotLogServiceImpl implements IDepotLogService {
Map<Long, String> assetNamesByIds = assetsMapper.selectList( Map<Long, String> assetNamesByIds = assetsMapper.selectList(
new LambdaQueryWrapper<Asset>() new LambdaQueryWrapper<Asset>()
.select(Asset::getId, Asset::getName) .select(Asset::getId, Asset::getName)
.in(Asset::getId, assetIds) .in(CollUtil.isNotEmpty(assetIds),Asset::getId, assetIds)
).stream() ).stream()
.collect(Collectors.toMap(Asset::getId, Asset::getName)); .collect(Collectors.toMap(Asset::getId, Asset::getName));
//批量获取厂库名 //批量获取厂库名
Map<Long, String> depotNamesByIds = depotMapper.selectList( Map<Long, String> depotNamesByIds = depotMapper.selectList(
new LambdaQueryWrapper<Depot>() new LambdaQueryWrapper<Depot>()
.select(Depot::getId, Depot::getDepotName) .select(Depot::getId, Depot::getDepotName)
.in(Depot::getId, depotIds) .in(CollUtil.isNotEmpty(depotIds),Depot::getId, depotIds)
).stream() ).stream()
.collect(Collectors.toMap(Depot::getId, Depot::getDepotName)); .collect(Collectors.toMap(Depot::getId, Depot::getDepotName));
result.getRecords().stream().forEach(s -> { result.getRecords().stream().forEach(s -> {

View File

@ -1,18 +1,18 @@
package org.dromara.property.service.impl; package org.dromara.property.service.impl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.property.domain.enums.BookingPayStatusEnum; import org.dromara.property.domain.enums.BookingPayStatusEnum;
import org.dromara.property.domain.enums.BookingStatusEnum; import org.dromara.property.domain.enums.BookingStatusEnum;
import org.dromara.property.domain.enums.MeetAttachStatusEnum; import org.dromara.property.domain.enums.MeetAttachStatusEnum;
import org.dromara.property.domain.enums.MeetStatusEnum; import org.dromara.property.domain.enums.MeetStatusEnum;
import org.dromara.property.service.*; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -31,6 +31,8 @@ public class EnumFetcherServiceImpl implements EnumFetcherService {
private IMeetBookingService meetBookingService; private IMeetBookingService meetBookingService;
@Autowired @Autowired
private IServiceWorkOrdersService serviceWorkOrdersService; private IServiceWorkOrdersService serviceWorkOrdersService;
@DubboReference
private RemoteUserService remoteUserService;
@Override @Override
public List<Map<Object, Object>> getEnumValues(String type) { public List<Map<Object, Object>> getEnumValues(String type) {
@ -55,11 +57,15 @@ public class EnumFetcherServiceImpl implements EnumFetcherService {
return getMeetBookingStatus(); return getMeetBookingStatus();
case "getServiceWorkOrdersHandler": case "getServiceWorkOrdersHandler":
return serviceWorkOrdersService.getServiceWorkOrdersHandler(type); return serviceWorkOrdersService.getServiceWorkOrdersHandler(type);
case "getAccount":
return getAccount();
default: default:
throw new IllegalArgumentException("Unknown type: " + type); throw new IllegalArgumentException("Unknown type: " + type);
} }
} }
/**
* 获取会议室状态枚举接口
*/
List<Map<Object, Object>> getMeetStatus() { List<Map<Object, Object>> getMeetStatus() {
return Arrays.stream(MeetStatusEnum.values()) return Arrays.stream(MeetStatusEnum.values())
.map(e -> { .map(e -> {
@ -104,4 +110,18 @@ public class EnumFetcherServiceImpl implements EnumFetcherService {
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
/**
* 获取账户信息
*/
List<Map<Object, Object>> getAccount() {
List<RemoteUserVo> remoteUserVos = remoteUserService.selectUserList(new ArrayList<>());
return remoteUserVos.stream()
.map(e -> {
Map<Object, Object> map = new HashMap<>();
map.put("value", e.getUserName());
map.put("name", e.getNickName());
return map;
})
.collect(Collectors.toList());
}
} }

View File

@ -1,6 +1,8 @@
package org.dromara.property.service.impl; package org.dromara.property.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; 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.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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.MeetBookingMapper;
import org.dromara.property.mapper.ResidentPersonMapper; import org.dromara.property.mapper.ResidentPersonMapper;
import org.dromara.property.mapper.TbRoomMapper; 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.springframework.stereotype.Service;
import org.dromara.property.domain.bo.MeetBo; import org.dromara.property.domain.bo.MeetBo;
@ -29,6 +33,7 @@ import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -46,6 +51,8 @@ public class MeetServiceImpl implements IMeetService {
private final ResidentPersonMapper residentPersonMapper; private final ResidentPersonMapper residentPersonMapper;
private final TbRoomMapper roomMapper; private final TbRoomMapper roomMapper;
private final MeetBookingMapper meetbookMapper; private final MeetBookingMapper meetbookMapper;
@DubboReference
private RemoteUserService remoteUserService;
/** /**
* 查询会议室管理 * 查询会议室管理
@ -54,12 +61,17 @@ public class MeetServiceImpl implements IMeetService {
* @return 会议室管理 * @return 会议室管理
*/ */
@Override @Override
public MeetVo queryById(Long id){ public MeetVo queryById(Long id) {
MeetVo meetVo= baseMapper.selectVoById(id); MeetVo meetVo = baseMapper.selectVoById(id);
ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(meetVo.getPrincipals()); // ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(meetVo.getPrincipals());
if(ObjectUtil.isNotEmpty(residentPersonVo)){ // if(ObjectUtil.isNotEmpty(residentPersonVo)){
meetVo.setPrincipalsName(residentPersonVo.getUserName()); // meetVo.setPrincipalsName(residentPersonVo.getUserName());
meetVo.setPhoneNo(residentPersonVo.getPhone()); // 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())); String locationName = roomMapper.queryRoomName(Long.valueOf(meetVo.getLocation()));
meetVo.setLocationName(locationName); meetVo.setLocationName(locationName);
@ -90,19 +102,17 @@ public class MeetServiceImpl implements IMeetService {
public List<MeetVo> queryList(MeetBo bo) { public List<MeetVo> queryList(MeetBo bo) {
//查询当前日期和当前时间段会议记录表的会议id //查询当前日期和当前时间段会议记录表的会议id
LambdaQueryWrapper<MeetBooking> bookLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<MeetBooking> bookLambdaQueryWrapper = new LambdaQueryWrapper<>();
String[] times = bo.getOpenHours().split("-");
String openStartTimeStr = times[0];
String openEndTimeStr = times[1];
LocalDate appointmentTime = LocalDate.parse(bo.getAppointmentTime()); LocalDate appointmentTime = LocalDate.parse(bo.getAppointmentTime());
LocalTime startTime = LocalTime.parse(openStartTimeStr, DateTimeFormatter.ofPattern("HH:mm")); LocalTime startTime = LocalTime.parse(bo.getOpenEndHours(), DateTimeFormatter.ofPattern("HH:mm"));
LocalTime EndTime = LocalTime.parse(openEndTimeStr, DateTimeFormatter.ofPattern("HH:mm")); LocalTime EndTime = LocalTime.parse(bo.getOpenEndHours(), DateTimeFormatter.ofPattern("HH:mm"));
LocalDateTime startDateTime = LocalDateTime.of(appointmentTime, startTime ); LocalDateTime startDateTime = LocalDateTime.of(appointmentTime, startTime);
LocalDateTime endDateTime = LocalDateTime.of(appointmentTime, EndTime); LocalDateTime endDateTime = LocalDateTime.of(appointmentTime, EndTime);
bookLambdaQueryWrapper.ge(MeetBooking::getScheduledStarttime, startDateTime) bookLambdaQueryWrapper
.ge(MeetBooking::getScheduledStarttime, startDateTime)
.le(MeetBooking::getScheduledEndtime, endDateTime); .le(MeetBooking::getScheduledEndtime, endDateTime);
List<MeetBooking> meetBookings = meetbookMapper.selectList(bookLambdaQueryWrapper); List<MeetBooking> meetBookings = meetbookMapper.selectList(bookLambdaQueryWrapper);
List<Long> meetIdList = meetBookings.stream().map(MeetBooking::getMeetId).collect(Collectors.toList()); List<Long> meetIdList = meetBookings.stream().map(MeetBooking::getMeetId).collect(Collectors.toList());
LambdaQueryWrapper<Meet> lqw = buildQueryListWrapper(bo,meetIdList); LambdaQueryWrapper<Meet> lqw = buildQueryListWrapper(bo, meetIdList);
return baseMapper.selectVoList(lqw); return baseMapper.selectVoList(lqw);
} }
@ -111,31 +121,32 @@ public class MeetServiceImpl implements IMeetService {
* @param bo * @param bo
* @return * @return
*/ */
private LambdaQueryWrapper<Meet> buildQueryListWrapper(MeetBo bo,List<Long> meetIdList) { private LambdaQueryWrapper<Meet> buildQueryListWrapper(MeetBo bo, List<Long> meetIdList) {
LambdaQueryWrapper<Meet> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<Meet> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(Meet::getId); lqw.orderByAsc(Meet::getId);
lqw.like(StringUtils.isNotBlank(bo.getName()), Meet::getName, bo.getName()); 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.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()); 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) if (bo.getOpenStartHours() != null && bo.getOpenEndHours() != null) {
.le(Meet::getOpenHours, openEndTimeStr); 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.getBasePrice() != null, Meet::getBasePrice, bo.getBasePrice());
lqw.eq(bo.getAttach() != null, Meet::getAttach, bo.getAttach()); lqw.eq(bo.getAttach() != null, Meet::getAttach, bo.getAttach());
return lqw; return lqw;
} }
private LambdaQueryWrapper<Meet> buildQueryWrapper(MeetBo bo) { private LambdaQueryWrapper<Meet> buildQueryWrapper(MeetBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<Meet> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<Meet> 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) @Transactional(rollbackFor = Exception.class)
public void validEntityBeforeSave(Meet entity){ public void validEntityBeforeSave(Meet entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
@ -203,16 +213,17 @@ public class MeetServiceImpl implements IMeetService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
/** /**
* 下拉接口数据 * 下拉接口数据
*/ */
@Override @Override
public List<Map<Object, Object>> getMeetSelectDate(String type){ public List<Map<Object, Object>> getMeetSelectDate(String type) {
switch (type) { switch (type) {
case "getMeetName": case "getMeetName":
List<Map<Object, Object>> result = new ArrayList<>(); List<Map<Object, Object>> result = new ArrayList<>();
@ -239,7 +250,8 @@ public class MeetServiceImpl implements IMeetService {
throw new IllegalArgumentException("Unknown type: " + type); throw new IllegalArgumentException("Unknown type: " + type);
} }
} }
public List<Meet> getList(){
public List<Meet> getList() {
LambdaQueryWrapper<Meet> meetQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Meet> meetQueryWrapper = new LambdaQueryWrapper<>();
return baseMapper.selectList(meetQueryWrapper); return baseMapper.selectList(meetQueryWrapper);

View File

@ -490,5 +490,14 @@ public class RemoteUserServiceImpl implements RemoteUserService {
return hashMap; return hashMap;
} }
@Override
public List<RemoteUserVo> selectUserList(List<Long> userIds) {
List<SysUser> list = userMapper.selectList(
new LambdaQueryWrapper<SysUser>()
.select()
.in(CollUtil.isNotEmpty(userIds),SysUser::getUserId, userIds)
).stream()
.collect(Collectors.toList());
return BeanUtil.copyToList(list, RemoteUserVo.class);
}
} }