访客修改

This commit is contained in:
zjf committed 2025-09-28 19:02:53 +08:00
1 parent 86f02bf68c
commit d4b5bb839b
3 files changed
+121 -5

No files matched your search

@@ -17,6 +17,7 @@ import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsYYAppDTO;
import com.bsd.pjcloud.integrated.entity.VisitorsEntity;
import com.bsd.pjcloud.integrated.service.VisitorsService;
import com.bsd.pjcloud.integrated.vo.visitor.app.VisitorsAppVo;
import com.bsd.pjcloud.integrated.vo.visitor.VisitorsPageVo;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -54,11 +55,8 @@ public class VisitorsController {
@Operation(summary = "分页查询" , description = "分页查询" )
@GetMapping("/page" )
@PreAuthorize("@pms.hasPermission('integrated_visitors_view')" )
public R getVisitorsPage(@ParameterObject Page page, @ParameterObject VisitorsEntity visitors) {
LambdaQueryWrapper<VisitorsEntity> wrapper = Wrappers.lambdaQuery();
wrapper.eq(StrUtil.isNotBlank(visitors.getName()),VisitorsEntity::getName,visitors.getName());
wrapper.eq(StrUtil.isNotBlank(visitors.getMobile()),VisitorsEntity::getMobile,visitors.getMobile());
return R.ok(visitorsService.page(page, wrapper));
public R getVisitorsPage(@ParameterObject Page<VisitorsEntity> page, @ParameterObject VisitorsEntity visitors) {
return R.ok(visitorsService.getVisitorsPageWithDeptName(page, visitors));
}
@@ -10,6 +10,7 @@ import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsYYAppDTO;
import com.bsd.pjcloud.integrated.entity.VisitorsEntity;
import com.bsd.pjcloud.integrated.vo.visitor.app.VisitorsAppVo;
import com.bsd.pjcloud.integrated.vo.visitor.app.VisitorsAppYYDetailVo;
import com.bsd.pjcloud.integrated.vo.visitor.VisitorsPageVo;
import java.util.List;
@@ -88,6 +89,14 @@ public interface VisitorsService extends IService<VisitorsEntity> {
Object receiveYY(VisitorsReceiveAppDTO visitorsReceiveAppDTO);
/**
* 分页查询访客表(包含部门名称回显)
* @param page 分页对象
* @param visitors 访客表查询条件
* @return 分页结果
*/
Page<VisitorsPageVo> getVisitorsPageWithDeptName(Page<VisitorsEntity> page, VisitorsEntity visitors);
/**
* 获取邀约详情
@@ -28,6 +28,8 @@ import com.bsd.pjcloud.integrated.constant.IntegratedFlowConstant;
import com.bsd.pjcloud.integrated.constant.VisitorTypeEnum;
import com.bsd.pjcloud.integrated.controller.AppVisitorUserController;
import com.bsd.pjcloud.integrated.dto.visitor.app.*;
import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsCarAppDTO;
import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsPeopleAppDTO;
import com.bsd.pjcloud.integrated.entity.VisitorUserEntity;
import com.bsd.pjcloud.integrated.entity.VisitorsCarEntity;
import com.bsd.pjcloud.integrated.entity.VisitorsEntity;
@@ -38,6 +40,7 @@ import com.bsd.pjcloud.integrated.mapper.VisitorsPeopleMapper;
import com.bsd.pjcloud.integrated.service.VisitorUserService;
import com.bsd.pjcloud.integrated.service.VisitorsService;
import com.bsd.pjcloud.integrated.vo.visitor.app.*;
import com.bsd.pjcloud.integrated.vo.visitor.VisitorsPageVo;
import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdPartySmsService;
import com.bsd.pjcloud.thirdparty.api.feign.RemoterVisitorService;
import com.bsd.pjcloud.thirdparty.dto.visitor.AppointmentInfo;
@@ -49,6 +52,7 @@ import com.bsd.pjcloud.thirdparty.dto.visitor.request.make.VisitorInfo;
import com.bsd.pjcloud.thirdparty.dto.visitor.response.make.AppointmentData;
import com.bsd.pjcloud.thirdparty.dto.visitor.response.make.QueryAppointmentRecordsResponse;
import com.github.yulichang.toolkit.StrUtils;
import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.oauth2.jwt.Jwt;
@@ -605,5 +609,110 @@ public class VisitorsServiceImpl extends ServiceImpl<VisitorsMapper, VisitorsEnt
return result;
}
@Override
public Page<VisitorsPageVo> getVisitorsPageWithDeptName(Page<VisitorsEntity> page, VisitorsEntity visitors) {
// 构建查询条件
LambdaQueryWrapper<VisitorsEntity> wrapper = Wrappers.lambdaQuery();
wrapper.eq(StrUtil.isNotBlank(visitors.getType()), VisitorsEntity::getType, visitors.getType());
wrapper.eq(StrUtil.isNotBlank(visitors.getName()), VisitorsEntity::getName, visitors.getName());
wrapper.eq(StrUtil.isNotBlank(visitors.getMobile()), VisitorsEntity::getMobile, visitors.getMobile());
// 执行分页查询
Page<VisitorsEntity> entityPage = baseMapper.selectPage(page, wrapper);
// 批量查询部门信息,避免N+1问题
List<Long> deptIds = entityPage.getRecords().stream()
.map(VisitorsEntity::getDeptId)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
Map<Long, String> deptNameMap = new HashMap<>();
if (!deptIds.isEmpty()) {
R<Map<Long, SysDept>> deptMapR = remoteDeptService.getDeptByDeptIds(deptIds);
if (deptMapR.isOk() && deptMapR.getData() != null) {
for (Map.Entry<Long, SysDept> entry : deptMapR.getData().entrySet()) {
deptNameMap.put(entry.getKey(), entry.getValue().getName());
}
}
}
// 批量查询车辆信息
List<Long> visitorIds = entityPage.getRecords().stream()
.map(VisitorsEntity::getId)
.collect(Collectors.toList());
final Map<Long, List<VisitorsCarAppDTO>> carMap;
final Map<Long, List<VisitorsPeopleAppDTO>> peopleMap;
if (!visitorIds.isEmpty()) {
// 查询车辆信息
List<VisitorsCarEntity> carEntities = visitorsCarMapper.selectList(
new LambdaQueryWrapper<VisitorsCarEntity>()
.in(VisitorsCarEntity::getVisitorsId, visitorIds)
);
if (!CollectionUtils.isEmpty(carEntities)) {
carMap = carEntities.stream()
.collect(Collectors.groupingBy(
VisitorsCarEntity::getVisitorsId,
Collectors.mapping(car -> {
VisitorsCarAppDTO dto = new VisitorsCarAppDTO();
dto.setCarNumber(car.getCarNumber());
return dto;
}, Collectors.toList())
));
} else {
carMap = new HashMap<>();
}
// 查询随行人员信息
List<VisitorsPeopleEntity> peopleEntities = visitorsPeopleMapper.selectList(
new LambdaQueryWrapper<VisitorsPeopleEntity>()
.in(VisitorsPeopleEntity::getVisitorsId, visitorIds)
);
if (!CollectionUtils.isEmpty(peopleEntities)) {
peopleMap = peopleEntities.stream()
.collect(Collectors.groupingBy(
VisitorsPeopleEntity::getVisitorsId,
Collectors.mapping(people -> {
VisitorsPeopleAppDTO dto = new VisitorsPeopleAppDTO();
dto.setName(people.getName());
dto.setMobile(people.getMobile());
return dto;
}, Collectors.toList())
));
} else {
peopleMap = new HashMap<>();
}
} else {
carMap = new HashMap<>();
peopleMap = new HashMap<>();
}
// 转换为VO
List<VisitorsPageVo> voList = entityPage.getRecords().stream().map(entity -> {
VisitorsPageVo vo = BeanUtils.toBean(entity, VisitorsPageVo.class);
// 设置部门名称
if (entity.getDeptId() != null) {
vo.setDeptName(deptNameMap.get(entity.getDeptId()));
}
// 设置车辆信息
vo.setCarList(carMap.getOrDefault(entity.getId(), new ArrayList<>()));
// 设置随行人员信息
vo.setOtherPeople(peopleMap.getOrDefault(entity.getId(), new ArrayList<>()));
return vo;
}).collect(Collectors.toList());
// 构建返回结果
Page<VisitorsPageVo> resultPage = new Page<>();
resultPage.setCurrent(entityPage.getCurrent());
resultPage.setSize(entityPage.getSize());
resultPage.setTotal(entityPage.getTotal());
resultPage.setPages(entityPage.getPages());
resultPage.setRecords(voList);
return resultPage;
}
}