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.tenant.core.aop.TenantIgnore;
|
||||
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 org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@ -38,4 +39,6 @@ public interface LaborContractMapper extends BaseMapperX<LaborContractDO> {
|
||||
LaborContractDO getTheEarliestContract(@Param("userId") Long userId);
|
||||
|
||||
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.probationPeriodTime", LaborContractRespVO::getProbationPeriodTime)
|
||||
.selectAs("a.status", LaborContractRespVO::getStatus)
|
||||
.selectAs("a.createTime", LaborContractRespVO::getCreateTime)
|
||||
.selectCount("a.id", LaborContractRespVO::getSigningCount);
|
||||
.selectAs("a.createTime", LaborContractRespVO::getCreateTime);
|
||||
queryWrapper.innerJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
|
||||
.leftJoin("(SELECT\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.eq(Objects.nonNull(pageReqVO.getStatus()), "a.status", pageReqVO.getStatus());
|
||||
queryWrapper.groupBy(AdminUserDO::getId);
|
||||
queryWrapper.orderByAsc("a.status");
|
||||
queryWrapper.orderByAsc(AdminUserDO::getId);
|
||||
|
||||
|
@ -22,10 +22,12 @@ import org.springframework.validation.annotation.Validated;
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
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.framework.common.util.collection.CollectionUtils.convertMap;
|
||||
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());
|
||||
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());
|
||||
}
|
||||
|
@ -39,4 +39,20 @@
|
||||
AND status = 1
|
||||
AND deleted = 0
|
||||
</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>
|
||||
|
Loading…
Reference in New Issue
Block a user