diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index 57e2803a..55599af4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java @@ -4,12 +4,16 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; +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.user.dto.UserPageDTO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.factoryUser.FactoryUserPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSimpleRespVO; import cn.iocoder.yudao.module.system.dal.dataobject.assets.AssetsTypeDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; @@ -17,6 +21,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; +import java.util.Objects; @Mapper public interface AdminUserMapper extends BaseMapperX { @@ -107,4 +112,45 @@ public interface AdminUserMapper extends BaseMapperX { * @return */ IPage getAllUserListByGroupIds(@Param("mpPage") IPage mpPage, @Param("dto") UserPageDTO dto); + + default IPage selectContractPage(IPage mpPage, LaborContractPageReqVO pageReqVO) { + + MPJLambdaWrapperX queryWrapper = new MPJLambdaWrapperX() + .selectAs("a.id", LaborContractRespVO::getId) + .selectAs(AdminUserDO::getId, LaborContractRespVO::getUserId) + .selectAs(AdminUserDO::getNickname, LaborContractRespVO::getUserName) + .selectAs(AdminUserDO::getDeptId, LaborContractRespVO::getDeptId) + .selectAs(DeptDO::getName, LaborContractRespVO::getDeptName) + .selectAs("a.signingDate", LaborContractRespVO::getSigningDate) + .selectAs("a.expirationDate", LaborContractRespVO::getExpirationDate) + .selectAs("a.contractDuration", LaborContractRespVO::getContractDuration) + .selectAs("a.probationPeriodTime", LaborContractRespVO::getProbationPeriodTime) + .selectAs("a.status", LaborContractRespVO::getStatus) + .selectAs("a.createTime", LaborContractRespVO::getCreateTime) + .selectCount("a.id", LaborContractRespVO::getSigningCount); + queryWrapper.innerJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId) + .leftJoin("(SELECT\n" + + " id,\n" + + " user_id,\n" + + " signing_date AS signingDate,\n" + + " expiration_date AS expirationDate,\n" + + " contract_duration AS contractDuration,\n" + + " status,\n" + + " MAX( create_time ) AS createTime\n" + + " FROM\n" + + " system_labor_contract\n" + + " WHERE\n" + + " deleted = 0\n" + + " GROUP BY\n" + + " id) a on a.id = t.id"); + queryWrapper.likeIfPresent(AdminUserDO::getNickname, pageReqVO.getUserName()); + queryWrapper.eqIfPresent(AdminUserDO::getDeptId, pageReqVO.getDeptId()); + queryWrapper.between(Objects.nonNull(pageReqVO.getSigningDate()), "a.signingDate", pageReqVO.getSigningDate()[0], pageReqVO.getSigningDate()[1]); + queryWrapper.between(Objects.nonNull(pageReqVO.getExpirationDate()), "a.expirationDate", pageReqVO.getExpirationDate()[0], pageReqVO.getExpirationDate()[1]); + queryWrapper.eq(Objects.nonNull(pageReqVO.getStatus()),"a.status", pageReqVO.getStatus()); + queryWrapper.groupBy(AdminUserDO::getId); + queryWrapper.orderByAsc("a.status"); + + return selectJoinPage(mpPage, LaborContractRespVO.class, queryWrapper); + } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml index 987e6f0a..2f4cf71b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml @@ -27,7 +27,7 @@ - SELECT DISTINCT a.id FROM