优化了劳动合同分页查询逻辑,支持多部门ID查询与排序。调整了LaborContractPageReqVO以支持多部门ID查询,更改了AdminUserMapper中的查询逻辑,以使用IN操作符处理多部门ID。同时,实现了根据用户ID的升序排列。

在获取部门数据时,若提供了部门ID,则会获取该部门及其所有子部门,以支持更复杂的查询需求。

本次更新确保了劳动合同分页查询功能更加灵活和高效。
This commit is contained in:
furongxin 2024-09-24 11:12:55 +08:00
parent d51ca296ba
commit 38c4fda5ce
3 changed files with 19 additions and 1 deletions

View File

@ -8,6 +8,7 @@ import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -23,6 +24,9 @@ public class LaborContractPageReqVO extends PageParam {
@Schema(description = "部门id", example = "128")
private Long deptId;
@Schema(description = "部门id", example = "128")
private List<Long> deptIds;
@Schema(description = "签约日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDate[] signingDate;

View File

@ -152,7 +152,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
" AND lc.create_time = max.max_create_time) a on a.user_id = t.id");
queryWrapper.eq(AdminUserDO::getUserType, 1);
queryWrapper.likeIfPresent(AdminUserDO::getNickname, pageReqVO.getUserName());
queryWrapper.eqIfPresent(AdminUserDO::getDeptId, pageReqVO.getDeptId());
queryWrapper.inIfPresent(AdminUserDO::getDeptId, pageReqVO.getDeptIds());
if (Objects.nonNull(pageReqVO.getSigningDate())) {
queryWrapper.between("a.signing_date", pageReqVO.getSigningDate()[0], pageReqVO.getSigningDate()[1]);
}
@ -162,6 +162,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
queryWrapper.eq(Objects.nonNull(pageReqVO.getStatus()),"a.status", pageReqVO.getStatus());
queryWrapper.groupBy(AdminUserDO::getId);
queryWrapper.orderByAsc("a.status");
queryWrapper.orderByAsc(AdminUserDO::getId);
return selectJoinPage(mpPage, LaborContractRespVO.class, queryWrapper);
}

View File

@ -7,9 +7,11 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
import cn.iocoder.yudao.module.system.dal.mysql.laborcontract.LaborContractMapper;
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
@ -21,6 +23,7 @@ import java.util.List;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LABOR_CONTRACT_NOT_EXISTS;
/**
@ -38,6 +41,9 @@ public class LaborContractServiceImpl implements LaborContractService {
@Resource
private AdminUserMapper userMapper;
@Resource
private DeptService deptService;
@Override
public Long createLaborContract(LaborContractSaveReqVO createReqVO) {
// 插入
@ -94,6 +100,13 @@ public class LaborContractServiceImpl implements LaborContractService {
@Override
public PageResult<LaborContractRespVO> getLaborContractPage(LaborContractPageReqVO pageReqVO) {
if (pageReqVO.getDeptId() != null) {
// 获取所有子级部门
List<DeptDO> deptDOS = deptService.getChildDept(pageReqVO.getDeptId());
pageReqVO.setDeptIds(convertList(deptDOS, DeptDO::getId));
}
Page<LaborContractRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<LaborContractRespVO> pageList = userMapper.selectContractPage(page, pageReqVO);