This commit is contained in:
zt
2025-09-26 20:45:19 +08:00
parent 45999b0c03
commit 9f7b6d77d3
5 changed files with 226 additions and 75 deletions

View File

@ -49,6 +49,7 @@ import org.dromara.project.domain.*;
import org.dromara.project.domain.enums.BusAttendanceClockStatusEnum;
import org.dromara.project.domain.enums.BusAttendanceCommuterEnum;
import org.dromara.project.domain.enums.BusConstructionUserAttendanceStatusEnum;
import org.dromara.project.domain.vo.projectteam.BusProjectTeamAppVo;
import org.dromara.project.service.*;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.SysUserRole;
@ -172,8 +173,24 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
*/
@Override
public TableDataInfo<SubConstructionUserVo> queryPageList(SubConstructionUserQueryReq req, PageQuery pageQuery) {
Long userId = LoginHelper.getUserId();
SysUserVo sysUserVo = userService.selectUserById(userId);
String appUserType = sysUserVo.getAppUserType();
List<Long> list1 = new ArrayList<>();
if ("2".equals(appUserType)) {
List<BusProjectTeamAppVo> byUserId = projectTeamService.getByUserId(userId, req.getProjectId());
if(CollectionUtil.isEmpty(byUserId)){
return new TableDataInfo<>();
}
list1 = byUserId.stream().map(BusProjectTeamAppVo::getId).toList();
}
// 查询数据库
Page<SubConstructionUser> result = this.page(pageQuery.build(), this.buildQueryWrapper(req));
LambdaQueryWrapper<SubConstructionUser> wrapper = this.buildQueryWrapper(req);
wrapper.in(req.getTeamId() == null && "2".equals(appUserType), SubConstructionUser::getTeamId,list1);
wrapper.eq(SubConstructionUser::getUserRole, "0");
Page<SubConstructionUser> result = this.page(pageQuery.build(), wrapper);
return TableDataInfo.build(getVoPage(result));
}

View File

@ -52,11 +52,14 @@ import org.dromara.project.domain.BusAttendance;
import org.dromara.project.domain.BusProject;
import org.dromara.project.domain.BusProjectTeam;
import org.dromara.project.domain.BusWorkWage;
import org.dromara.project.domain.vo.projectteam.BusProjectTeamAppVo;
import org.dromara.project.service.IBusAttendanceService;
import org.dromara.project.service.IBusProjectService;
import org.dromara.project.service.IBusProjectTeamService;
import org.dromara.project.service.IBusWorkWageService;
import org.dromara.project.service.impl.BusProjectTeamServiceImpl;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
@ -110,6 +113,10 @@ public class SubUserSalaryDetailServiceImpl extends ServiceImpl<SubUserSalaryDet
@Lazy
private IBusProjectTeamService projectTeamService;
@Resource
@Lazy
private ISysUserService userService;
/**
* 查询员工每日工资
*
@ -280,10 +287,25 @@ public class SubUserSalaryDetailServiceImpl extends ServiceImpl<SubUserSalaryDet
LocalDate start = parse.atDay(1);
LocalDate end = parse.atEndOfMonth();
Long userId = LoginHelper.getUserId();
SysUserVo sysUserVo = userService.selectUserById(userId);
String appUserType = sysUserVo.getAppUserType();
List<Long> list1 = new ArrayList<>();
if ("2".equals(appUserType)) {
List<BusProjectTeamAppVo> byUserId = projectTeamService.getByUserId(userId, dto.getProjectId());
if(CollectionUtil.isEmpty(byUserId)){
return new TableDataInfo<>();
}
list1 = byUserId.stream().map(BusProjectTeamAppVo::getId).toList();
}
QueryWrapper<SubUserSalaryDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.select("user_id","max(team_id) as teamId","max(create_by) as createBy", "SUM(work_hour) as workHour", "SUM(total_salary) as totalSalary","max(create_time) as createTime")
.eq("project_id", dto.getProjectId())
.between("report_date", start, end)
.in(dto.getTeamId()==null && "2".equals(appUserType),"team_id", list1)
.eq(dto.getTeamId()!=null,"team_id", dto.getTeamId())
.like(StringUtils.isNotBlank(dto.getUserName()),"user_name", dto.getUserName())
.groupBy("user_id");

View File

@ -83,6 +83,7 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
@Resource
private SseProperties sseProperties;
/**
* 分页查询卷册文件列表
*
@ -139,19 +140,19 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
desVolumeFileCodeVo.setProjectName(byId.getProjectName());
desVolumeFileCodeVo.setType(desVolumeFile.getType());
if(DesVolumeFile.BLUEPRINT.equals(desVolumeFile.getType())){
if (DesVolumeFile.BLUEPRINT.equals(desVolumeFile.getType())) {
//查询图纸最新版
List<DesVolumeFile> existingFiles = baseMapper.selectList(new LambdaQueryWrapper<DesVolumeFile>()
.eq(DesVolumeFile::getVolumeCatalogId, desVolumeFile.getVolumeCatalogId())
.eq(DesVolumeFile::getType, DesVolumeFile.BLUEPRINT)
.orderByDesc(DesVolumeFile::getVersion));
if(CollectionUtil.isNotEmpty(existingFiles)){
if (CollectionUtil.isNotEmpty(existingFiles)) {
DesVolumeFile desVolumeFile1 = existingFiles.getFirst();
if(!desVolumeFile1.getId().equals(id)){
if (!desVolumeFile1.getId().equals(id)) {
SysOssVo ossVo = ossService.getById(desVolumeFile1.getFileId());
desVolumeFileCodeVo.setFileUrl(ossVo.getUrl());
}else {
} else {
desVolumeFileCodeVo.setIsLatest(true);
}
}
@ -162,7 +163,7 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
.eq(DesVolumeFile::getType, DesVolumeFile.PROCESS)
.orderByDesc(DesVolumeFile::getVersion));
if(!existingFiles.isEmpty()){
if (!existingFiles.isEmpty()) {
DesVolumeFile first = existingFiles.getFirst();
if (DesVolumeFile.WASTE.equals(desVolumeFile.getType())) {
SysOssVo ossVo = ossService.getById(first.getFileId());
@ -198,7 +199,7 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
}
DesVolumeFileVo vo = getVo(volumeFile);
BusDrawingreviewReceiptsVo infoByReviewId = busDrawingreviewReceiptsService.getInfoByReviewId(volumeFile.getId());
if(infoByReviewId != null && infoByReviewId.getApproveId()!=null){
if (infoByReviewId != null && infoByReviewId.getApproveId() != null) {
vo.setIsWindow(false);
}
@ -248,11 +249,11 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
//抄送信息
if(CollectionUtil.isNotEmpty(req.getUserIds())){
if (CollectionUtil.isNotEmpty(req.getUserIds())) {
SseMessageDto dto = new SseMessageDto();
SeeMessageContentDto contentDto = new SeeMessageContentDto();
contentDto.setType(sseProperties.getDrawing());
contentDto.setContent("<"+volumeCatalog.getDocumentName()+">"+"的蓝图已上传");
contentDto.setContent("<" + volumeCatalog.getDocumentName() + ">" + "的蓝图已上传");
dto.setMessage(JSONUtil.toJsonStr(contentDto));
dto.setUserIds(req.getUserIds());
SseMessageUtils.publishMessage(dto);
@ -297,9 +298,126 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
* @param type 文件类型
* @param desVolumeFiles 文件集合
*/
// private void processFiles(DesVolumeFileCreateReq req, List<Long> fileIds, String type, List<DesVolumeFile> desVolumeFiles) {
// // 用于记录同一批次中已处理的文件名及对应的版本号
// Map<String, String> batchFileVersionMap = new HashMap<>();
//
// for (Long fileId : fileIds) {
// SysOssVo ossVo = ossService.getById(fileId);
// if (ossVo == null) {
// throw new ServiceException("对应文件不存在", HttpStatus.NOT_FOUND);
// }
//
// DesVolumeFile file = new DesVolumeFile();
// BeanUtils.copyProperties(req, file);
// file.setFileId(fileId);
//
// String fileName = ossVo.getOriginalName();
//
// // 根据文件类型和文件名判断是否存在文件,存在则版本号往上增
// List<DesVolumeFile> existingFiles = baseMapper.selectList(new LambdaQueryWrapper<DesVolumeFile>()
// .eq(DesVolumeFile.PROCESS.equals(type),DesVolumeFile::getType, type)
// .in(DesVolumeFile.BLUEPRINT.equals(type),DesVolumeFile::getType, Arrays.asList(DesVolumeFile.BLUEPRINT, DesVolumeFile.WASTE))
// .eq(DesVolumeFile::getVolumeCatalogId, file.getVolumeCatalogId())
//// .eq(DesVolumeFile::getFileName, fileName)
// .orderByDesc(DesVolumeFile::getVersion));
//
// String versionStr = "1.0"; // 默认版本号
//
// if (DesVolumeFile.BLUEPRINT.equals(type)) {
// // 蓝图文件1.0, 2.0, 3.0...
// if (CollectionUtil.isNotEmpty(existingFiles)) {
// String lastVersion = existingFiles.getFirst().getVersion();
// int majorVersion = (int) Math.floor(Double.parseDouble(lastVersion)) + 1;
// versionStr = majorVersion + ".0";
// }
// } else if (DesVolumeFile.PROCESS.equals(type)) {
// // 过程图纸基于蓝图版本号如蓝图是1.0则过程图为1.1, 1.2...1.9, 1.10
// // 先查找对应的蓝图文件最新版本
// List<DesVolumeFile> blueprintFiles = baseMapper.selectList(new LambdaQueryWrapper<DesVolumeFile>()
// .in(DesVolumeFile::getType, Arrays.asList(DesVolumeFile.BLUEPRINT, DesVolumeFile.WASTE)) // 蓝图类型
// .eq(DesVolumeFile::getVolumeCatalogId, file.getVolumeCatalogId())
//// .eq(DesVolumeFile::getFileName, fileName)
// .orderByDesc(DesVolumeFile::getVersion));
//
// String blueprintVersion = "0.0"; // 默认蓝图版本
// if (CollectionUtil.isNotEmpty(blueprintFiles)) {
// blueprintVersion = blueprintFiles.getFirst().getVersion();
// }
//
// // 解析蓝图版本号
// String[] blueprintParts = blueprintVersion.split("\\.");
// int blueprintMajor = Integer.parseInt(blueprintParts[0]);
//
// if (CollectionUtil.isNotEmpty(existingFiles)) {
// // 已存在过程图纸,需要递增次版本号
// String lastVersion = existingFiles.getFirst().getVersion();
// String[] parts = lastVersion.split("\\.");
// int major = Integer.parseInt(parts[0]);
// int minor = Integer.parseInt(parts[1]);
//
// if (major == blueprintMajor) {
// // 同一主版本,次版本号递增
// minor++;
// versionStr = major + "." + minor;
// } else {
// // 不同主版本使用蓝图的主版本并从1开始
// versionStr = blueprintMajor + ".1";
// }
// } else {
// // 不存在过程图纸,从蓝图版本的.1开始
// versionStr = blueprintMajor + ".1";
// }
// }
//
// // 检查同一批次中是否已存在同名文件
// if (batchFileVersionMap.containsKey(fileName)) {
// String lastBatchVersion = String.valueOf(batchFileVersionMap.get(fileName));
// if ( DesVolumeFile.BLUEPRINT.equals(type)) {
// // 蓝图文件批次处理
// int lastMajor = (int) Math.floor(Double.parseDouble(lastBatchVersion));
// versionStr = (lastMajor + 1) + ".0";
// } else if (DesVolumeFile.PROCESS.equals(type)) {
// // 过程图纸批次处理
// String[] currentParts = versionStr.split("\\.");
// String[] batchParts = lastBatchVersion.split("\\.");
//
// int currentMajor = Integer.parseInt(currentParts[0]);
// int currentMinor = Integer.parseInt(currentParts[1]);
// int batchMajor = Integer.parseInt(batchParts[0]);
// int batchMinor = Integer.parseInt(batchParts[1]);
//
// if (currentMajor == batchMajor) {
// // 同一主版本,取较大的次版本号+1
// int newMinor = Math.max(currentMinor, batchMinor) + 1;
// versionStr = currentMajor + "." + newMinor;
// }
// }
// }
//
// // 更新批次文件版本映射(存储为字符串形式)
// batchFileVersionMap.put(fileName, versionStr);
//
// file.setVersion(versionStr);
// file.setFileName(fileName);
// desVolumeFiles.add(file);
// }
// }
private void processFiles(DesVolumeFileCreateReq req, List<Long> fileIds, String type, List<DesVolumeFile> desVolumeFiles) {
// 用于记录同一批次中已处理的文件名及对应的版本号
Map<String, String> batchFileVersionMap = new HashMap<>();
// 用于记录同一批次中的索引
int fileIndex = 0;
// 先找出数据库中已存在的最高版本号
List<DesVolumeFile> existingFilesInDB = baseMapper.selectList(new LambdaQueryWrapper<DesVolumeFile>()
.eq(DesVolumeFile.PROCESS.equals(type), DesVolumeFile::getType, type)
.in(DesVolumeFile.BLUEPRINT.equals(type), DesVolumeFile::getType, Arrays.asList(DesVolumeFile.BLUEPRINT, DesVolumeFile.WASTE))
.eq(DesVolumeFile::getVolumeCatalogId, req.getVolumeCatalogId())
.orderByDesc(DesVolumeFile::getVersion));
double maxBatchVersion = 0.0;
if (CollectionUtil.isNotEmpty(existingFilesInDB)) {
maxBatchVersion = Double.parseDouble(existingFilesInDB.getFirst().getVersion());
}
for (Long fileId : fileIds) {
SysOssVo ossVo = ossService.getById(fileId);
@ -313,97 +431,59 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
String fileName = ossVo.getOriginalName();
// 根据文件类型和文件名判断是否存在文件,存在则版本号往上增
List<DesVolumeFile> existingFiles = baseMapper.selectList(new LambdaQueryWrapper<DesVolumeFile>()
.eq(DesVolumeFile.PROCESS.equals(type),DesVolumeFile::getType, type)
.in(DesVolumeFile.BLUEPRINT.equals(type),DesVolumeFile::getType, Arrays.asList(DesVolumeFile.BLUEPRINT, DesVolumeFile.WASTE))
.eq(DesVolumeFile::getVolumeCatalogId, file.getVolumeCatalogId())
// .eq(DesVolumeFile::getFileName, fileName)
.orderByDesc(DesVolumeFile::getVersion));
String versionStr = "1.0"; // 默认版本号
if (DesVolumeFile.BLUEPRINT.equals(type)) {
// 蓝图文件1.0, 2.0, 3.0...
if (CollectionUtil.isNotEmpty(existingFiles)) {
String lastVersion = existingFiles.getFirst().getVersion();
int majorVersion = (int) Math.floor(Double.parseDouble(lastVersion)) + 1;
versionStr = majorVersion + ".0";
}
// 每个文件递增主版本号
int majorVersion = (int) maxBatchVersion + fileIndex + 1;
versionStr = majorVersion + ".0";
} else if (DesVolumeFile.PROCESS.equals(type)) {
// 过程图纸:基于蓝图版本号如蓝图是1.0则过程图为1.1, 1.2...1.9, 1.10
// 先查找对应的蓝图文件最新版本
// 过程图纸:基于蓝图版本号
List<DesVolumeFile> blueprintFiles = baseMapper.selectList(new LambdaQueryWrapper<DesVolumeFile>()
.in(DesVolumeFile::getType, Arrays.asList(DesVolumeFile.BLUEPRINT, DesVolumeFile.WASTE)) // 蓝图类型
.eq(DesVolumeFile::getVolumeCatalogId, file.getVolumeCatalogId())
// .eq(DesVolumeFile::getFileName, fileName)
.in(DesVolumeFile::getType, Arrays.asList(DesVolumeFile.BLUEPRINT, DesVolumeFile.WASTE))
.eq(DesVolumeFile::getVolumeCatalogId, req.getVolumeCatalogId())
.orderByDesc(DesVolumeFile::getVersion));
String blueprintVersion = "0.0"; // 默认蓝图版本
String blueprintVersion = "0.0";
if (CollectionUtil.isNotEmpty(blueprintFiles)) {
blueprintVersion = blueprintFiles.getFirst().getVersion();
}
// 解析蓝图版本号
String[] blueprintParts = blueprintVersion.split("\\.");
int blueprintMajor = Integer.parseInt(blueprintParts[0]);
if (CollectionUtil.isNotEmpty(existingFiles)) {
// 已存在过程图纸,需要递增次版本号
String lastVersion = existingFiles.getFirst().getVersion();
String[] parts = lastVersion.split("\\.");
int major = Integer.parseInt(parts[0]);
int minor = Integer.parseInt(parts[1]);
// 对于过程图纸,需要基于数据库中已存在的最高版本号来计算
if (CollectionUtil.isNotEmpty(existingFilesInDB) && existingFilesInDB.getFirst().getType().equals(DesVolumeFile.PROCESS)) {
// 如果数据库中已存在过程图纸,则基于最高版本号递增
String lastProcessVersion = existingFilesInDB.getFirst().getVersion();
String[] lastParts = lastProcessVersion.split("\\.");
int lastMajor = Integer.parseInt(lastParts[0]);
int lastMinor = Integer.parseInt(lastParts[1]);
if (major == blueprintMajor) {
// 同一主版本,次版本号递增
minor++;
versionStr = major + "." + minor;
// 如果主版本号相同则次版本号递增否则使用蓝图主版本号次版本号从1开始
if (lastMajor == blueprintMajor) {
int minorVersion = lastMinor + fileIndex + 1;
versionStr = lastMajor + "." + minorVersion;
} else {
// 不同主版本使用蓝图的主版本并从1开始
versionStr = blueprintMajor + ".1";
int minorVersion = fileIndex + 1;
versionStr = blueprintMajor + "." + minorVersion;
}
} else {
// 不存在过程图纸,从蓝图版本的.1开始
versionStr = blueprintMajor + ".1";
// 数据库中没有过程图纸,从蓝图版本的.1开始
int minorVersion = fileIndex + 1;
versionStr = blueprintMajor + "." + minorVersion;
}
}
// 检查同一批次中是否已存在同名文件
if (batchFileVersionMap.containsKey(fileName)) {
String lastBatchVersion = String.valueOf(batchFileVersionMap.get(fileName));
if ( DesVolumeFile.BLUEPRINT.equals(type)) {
// 蓝图文件批次处理
int lastMajor = (int) Math.floor(Double.parseDouble(lastBatchVersion));
versionStr = (lastMajor + 1) + ".0";
} else if (DesVolumeFile.PROCESS.equals(type)) {
// 过程图纸批次处理
String[] currentParts = versionStr.split("\\.");
String[] batchParts = lastBatchVersion.split("\\.");
int currentMajor = Integer.parseInt(currentParts[0]);
int currentMinor = Integer.parseInt(currentParts[1]);
int batchMajor = Integer.parseInt(batchParts[0]);
int batchMinor = Integer.parseInt(batchParts[1]);
if (currentMajor == batchMajor) {
// 同一主版本,取较大的次版本号+1
int newMinor = Math.max(currentMinor, batchMinor) + 1;
versionStr = currentMajor + "." + newMinor;
}
}
}
// 更新批次文件版本映射(存储为字符串形式)
batchFileVersionMap.put(fileName, versionStr);
file.setVersion(versionStr);
file.setFileName(fileName);
desVolumeFiles.add(file);
fileIndex++;
}
}
/**
* 批量删除卷册文件信息
*
@ -432,7 +512,7 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
// 关联文件信息
Long fileId = volumeFile.getFileId();
SysOssVo ossVo = ossService.getById(fileId);
if(ossVo != null){
if (ossVo != null) {
vo.setFileUrl(ossVo.getUrl());
}
return vo;

View File

@ -1,6 +1,8 @@
package org.dromara.project.domain.vo.attendance;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.project.domain.dto.attendance.AttendanceCountDto;
import org.springframework.format.annotation.DateTimeFormat;
@ -8,6 +10,8 @@ import java.time.LocalDate;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceCountVo {
/**

View File

@ -43,6 +43,7 @@ import org.dromara.project.domain.vo.BusAttendanceRuleVo;
import org.dromara.project.domain.vo.BusAttendanceVo;
import org.dromara.project.domain.vo.BusMonthAttendanceVo;
import org.dromara.project.domain.vo.attendance.*;
import org.dromara.project.domain.vo.projectteam.BusProjectTeamAppVo;
import org.dromara.project.mapper.BusAttendanceMapper;
import org.dromara.project.service.*;
import org.dromara.system.domain.vo.SysOssVo;
@ -869,11 +870,25 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
@Override
public AttendanceCountVo getAttendanceCount(AttendanceCountDto dto) {
Long userId = LoginHelper.getUserId();
SysUserVo sysUserVo = userService.selectUserById(userId);
String appUserType = sysUserVo.getAppUserType();
List<Long> list2 = new ArrayList<>();
if ("2".equals(appUserType)) {
List<BusProjectTeamAppVo> byUserId = projectTeamService.getByUserId(userId, dto.getProjectId());
if(CollectionUtil.isEmpty(byUserId)){
return new AttendanceCountVo(0,0);
}
list2 = byUserId.stream().map(BusProjectTeamAppVo::getId).toList();
}
AttendanceCountVo attendanceCountVo = new AttendanceCountVo();
//先查询人员有那些
List<SubConstructionUser> list = constructionUserService.list(Wrappers.lambdaQuery(SubConstructionUser.class)
.eq(SubConstructionUser::getProjectId, dto.getProjectId())
.eq(dto.getTeamId() != null, SubConstructionUser::getTeamId, dto.getTeamId())
.in(dto.getTeamId() == null && "2".equals(appUserType), SubConstructionUser::getTeamId, list2)
.eq(StringUtils.isNotBlank(dto.getTypeOfWork()), SubConstructionUser::getTypeOfWork, dto.getTypeOfWork())
);
attendanceCountVo.setTotalCount(list.size());
@ -901,6 +916,18 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
@Override
public TableDataInfo<AttendanceUserVo> getAttendanceUser(AttendanceCountDto dto, PageQuery pageQuery) {
//查询今天打卡人员
Long userId = LoginHelper.getUserId();
SysUserVo sysUser = userService.selectUserById(userId);
String appUserType = sysUser.getAppUserType();
List<Long> list1 = new ArrayList<>();
if ("2".equals(appUserType)) {
List<BusProjectTeamAppVo> byUserId = projectTeamService.getByUserId(userId, dto.getProjectId());
if(CollectionUtil.isEmpty(byUserId)){
return new TableDataInfo<>();
}
list1 = byUserId.stream().map(BusProjectTeamAppVo::getId).toList();
}
List<BusAttendance> attendanceList = baseMapper.selectList(Wrappers.<BusAttendance>lambdaQuery()
.eq(BusAttendance::getProjectId, dto.getProjectId())
@ -925,6 +952,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
wrapper.notIn("2".equals(dto.getClockStatus()) && CollectionUtil.isNotEmpty(attendanceUserIds), SubConstructionUser::getSysUserId, attendanceUserIds);
wrapper.eq(StrUtil.isNotBlank(dto.getTypeOfWork()), SubConstructionUser::getTypeOfWork, dto.getTypeOfWork());
wrapper.eq(dto.getTeamId() != null, SubConstructionUser::getTeamId, dto.getTeamId());
wrapper.in(dto.getTeamId() == null && "2".equals(appUserType), SubConstructionUser::getTeamId, list1);
Page<SubConstructionUser> result = constructionUserService.page(pageQuery.build(), wrapper);
List<SubConstructionUser> records = result.getRecords();