feat(system): 优化合同查询功能
- 移除 AdminUserMapper 中的冗余查询和分组 - 在 LaborContractMapper 中添加新的查询方法 selectContractCount - 更新 LaborContractServiceImpl 中的 pageContract 方法,添加签订次数统计
This commit is contained in:
parent
8097eb2ea9
commit
6029bb270d
@ -4,6 +4,7 @@ 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.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.file.vo.FileRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.file.vo.FileRespVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@ -38,4 +39,6 @@ public interface LaborContractMapper extends BaseMapperX<LaborContractDO> {
|
|||||||
LaborContractDO getTheEarliestContract(@Param("userId") Long userId);
|
LaborContractDO getTheEarliestContract(@Param("userId") Long userId);
|
||||||
|
|
||||||
List<LaborContractDO> selectListByRemindDate(@Param("remindDate")LocalDate remindDate);
|
List<LaborContractDO> selectListByRemindDate(@Param("remindDate")LocalDate remindDate);
|
||||||
|
|
||||||
|
List<LaborContractRespVO> selectContractCount(@Param("userIds") List<Long> userIds);
|
||||||
}
|
}
|
||||||
|
@ -120,8 +120,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
|
|||||||
.selectAs("a.contractDuration", LaborContractRespVO::getContractDuration)
|
.selectAs("a.contractDuration", LaborContractRespVO::getContractDuration)
|
||||||
.selectAs("a.probationPeriodTime", LaborContractRespVO::getProbationPeriodTime)
|
.selectAs("a.probationPeriodTime", LaborContractRespVO::getProbationPeriodTime)
|
||||||
.selectAs("a.status", LaborContractRespVO::getStatus)
|
.selectAs("a.status", LaborContractRespVO::getStatus)
|
||||||
.selectAs("a.createTime", LaborContractRespVO::getCreateTime)
|
.selectAs("a.createTime", LaborContractRespVO::getCreateTime);
|
||||||
.selectCount("a.id", LaborContractRespVO::getSigningCount);
|
|
||||||
queryWrapper.innerJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
|
queryWrapper.innerJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
|
||||||
.leftJoin("(SELECT\n" +
|
.leftJoin("(SELECT\n" +
|
||||||
" id,\n" +
|
" id,\n" +
|
||||||
@ -156,7 +155,6 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
|
|||||||
queryWrapper.between("a.expiration_date", pageReqVO.getExpirationDate()[0], pageReqVO.getExpirationDate()[1]);
|
queryWrapper.between("a.expiration_date", pageReqVO.getExpirationDate()[0], pageReqVO.getExpirationDate()[1]);
|
||||||
}
|
}
|
||||||
queryWrapper.eq(Objects.nonNull(pageReqVO.getStatus()), "a.status", pageReqVO.getStatus());
|
queryWrapper.eq(Objects.nonNull(pageReqVO.getStatus()), "a.status", pageReqVO.getStatus());
|
||||||
queryWrapper.groupBy(AdminUserDO::getId);
|
|
||||||
queryWrapper.orderByAsc("a.status");
|
queryWrapper.orderByAsc("a.status");
|
||||||
queryWrapper.orderByAsc(AdminUserDO::getId);
|
queryWrapper.orderByAsc(AdminUserDO::getId);
|
||||||
|
|
||||||
|
@ -22,10 +22,12 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
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.framework.common.util.collection.CollectionUtils.convertList;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LABOR_CONTRACT_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LABOR_CONTRACT_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -126,6 +128,21 @@ public class LaborContractServiceImpl implements LaborContractService {
|
|||||||
|
|
||||||
Page<LaborContractRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
Page<LaborContractRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||||
IPage<LaborContractRespVO> pageList = userMapper.selectContractPage(page, pageReqVO);
|
IPage<LaborContractRespVO> pageList = userMapper.selectContractPage(page, pageReqVO);
|
||||||
|
if (CollectionUtil.isNotEmpty(pageList.getRecords())) {
|
||||||
|
|
||||||
|
List<Long> userIds = convertList(pageList.getRecords(), LaborContractRespVO::getUserId);
|
||||||
|
List<LaborContractRespVO> countRespVOs = laborContractMapper.selectContractCount(userIds);
|
||||||
|
Map<Long, LaborContractRespVO> countMap = convertMap(countRespVOs, LaborContractRespVO::getUserId);
|
||||||
|
|
||||||
|
pageList.getRecords().forEach(item -> {
|
||||||
|
LaborContractRespVO respVO = countMap.get(item.getUserId());
|
||||||
|
if (respVO != null) {
|
||||||
|
item.setSigningCount(respVO.getSigningCount());
|
||||||
|
}else {
|
||||||
|
item.setSigningCount(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return new PageResult<>(pageList.getRecords(), pageList.getTotal());
|
return new PageResult<>(pageList.getRecords(), pageList.getTotal());
|
||||||
}
|
}
|
||||||
|
@ -39,4 +39,20 @@
|
|||||||
AND status = 1
|
AND status = 1
|
||||||
AND deleted = 0
|
AND deleted = 0
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectContractCount" resultType="cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO">
|
||||||
|
SELECT
|
||||||
|
user_id AS userId,
|
||||||
|
COUNT(1) AS signingCount
|
||||||
|
FROM
|
||||||
|
system_labor_contract
|
||||||
|
WHERE
|
||||||
|
deleted = 0
|
||||||
|
AND user_id in
|
||||||
|
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
|
||||||
|
#{userId}
|
||||||
|
</foreach>
|
||||||
|
GROUP BY
|
||||||
|
user_id
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
Loading…
Reference in New Issue
Block a user