feat(oa): 添加财务模块主表分页查询功能
- 新增 selectMainPageList 方法用于主表分页查询 - 在 SysOaFinanceMapper.xml 中添加对应的 SQL 查询语句 - 修改 selectPageFinanceList 实现,先查询主表数据再批量查询子表数据 - 通过 financeId 分组将子表数据封装到对应的主表记录中 - 修复查询条件中的字段前缀问题,统一使用表别名 sof
This commit is contained in:
@@ -37,6 +37,8 @@ public interface SysOaFinanceMapper extends BaseMapperPlus<SysOaFinanceMapper, S
|
|||||||
})
|
})
|
||||||
Page<SysOaFinanceVo> selectPageFinanceList(@Param("page") Page<SysOaFinanceVo> page, @Param(Constants.WRAPPER) Wrapper<SysOaFinance> queryWrapper);
|
Page<SysOaFinanceVo> selectPageFinanceList(@Param("page") Page<SysOaFinanceVo> page, @Param(Constants.WRAPPER) Wrapper<SysOaFinance> queryWrapper);
|
||||||
|
|
||||||
|
Page<SysOaFinanceVo> selectMainPageList(@Param("page") Page<SysOaFinanceVo> page, @Param(Constants.WRAPPER) Wrapper<SysOaFinance> queryWrapper);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目进出账查询
|
* 项目进出账查询
|
||||||
|
|||||||
@@ -59,8 +59,24 @@ public class SysOaFinanceServiceImpl implements ISysOaFinanceService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo<SysOaFinanceVo> selectPageFinanceList(SysOaFinanceBo bo, PageQuery pageQuery) {
|
public TableDataInfo<SysOaFinanceVo> selectPageFinanceList(SysOaFinanceBo bo, PageQuery pageQuery) {
|
||||||
Page<SysOaFinanceVo> sysOaFinanceVoPage = baseMapper.selectPageFinanceList(pageQuery.build(), this.buildQueryWrapper(bo));
|
// 先查询主表分页数据
|
||||||
return TableDataInfo.build(sysOaFinanceVoPage);
|
Page<SysOaFinanceVo> mainPage = baseMapper.selectMainPageList(pageQuery.build(), this.buildQueryWrapper(bo));
|
||||||
|
List<SysOaFinanceVo> records = mainPage.getRecords();
|
||||||
|
if (records != null && !records.isEmpty()) {
|
||||||
|
// 获取所有主表ID
|
||||||
|
List<Long> financeIds = records.stream().map(SysOaFinanceVo::getFinanceId).collect(java.util.stream.Collectors.toList());
|
||||||
|
// 批量查询子表数据
|
||||||
|
List<SysOaDetail> details = sysOaDetailMapper.selectList(new LambdaQueryWrapper<SysOaDetail>()
|
||||||
|
.in(SysOaDetail::getFinanceId, financeIds));
|
||||||
|
// 按financeId分组
|
||||||
|
Map<Long, List<SysOaDetail>> detailMap = details.stream().collect(java.util.stream.Collectors.groupingBy(SysOaDetail::getFinanceId));
|
||||||
|
// 封装子表数据
|
||||||
|
for (SysOaFinanceVo vo : records) {
|
||||||
|
vo.setDetailList(detailMap.getOrDefault(vo.getFinanceId(), new ArrayList<>()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mainPage.setRecords(records);
|
||||||
|
return TableDataInfo.build(mainPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -201,7 +217,7 @@ public class SysOaFinanceServiceImpl implements ISysOaFinanceService {
|
|||||||
lqw.eq(Objects.nonNull(bo.getReceiveAccountId()) && bo.getReceiveAccountId()!=-1L, "sof.receive_account_id", bo.getReceiveAccountId());
|
lqw.eq(Objects.nonNull(bo.getReceiveAccountId()) && bo.getReceiveAccountId()!=-1L, "sof.receive_account_id", bo.getReceiveAccountId());
|
||||||
lqw.between(bo.getBeginCreateTime()!= null && bo.getEndCreateTime()!= null,
|
lqw.between(bo.getBeginCreateTime()!= null && bo.getEndCreateTime()!= null,
|
||||||
"sof.create_time", bo.getBeginCreateTime(), bo.getEndCreateTime());
|
"sof.create_time", bo.getBeginCreateTime(), bo.getEndCreateTime());
|
||||||
lqw.orderByDesc("create_time");
|
lqw.orderByDesc("sof.create_time");
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
${ew.getCustomSqlSegment}
|
${ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectMainPageList" resultMap="SysOaFinanceResult">
|
||||||
|
select sof.finance_id,
|
||||||
|
sof.project_id,
|
||||||
|
sof.finance_title,
|
||||||
|
sof.finance_parties,
|
||||||
|
sof.pay_type,
|
||||||
|
sof.finance_type,
|
||||||
|
sof.finance_time,
|
||||||
|
sof.make_ratio,
|
||||||
|
sof.make_price,
|
||||||
|
sof.make_time,
|
||||||
|
sof.make_explain,
|
||||||
|
sof.accessory,
|
||||||
|
sof.remark as finance_remark,
|
||||||
|
sof.create_by,
|
||||||
|
sof.create_time,
|
||||||
|
sof.update_by,
|
||||||
|
sof.update_time,
|
||||||
|
sof.out_type,
|
||||||
|
sof.cost_category,
|
||||||
|
sof.signing_company,
|
||||||
|
sof.payment_progress_id,
|
||||||
|
sof.status
|
||||||
|
from sys_oa_finance sof
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectFinanceList" resultMap="SysOaFinanceResult">
|
<select id="selectFinanceList" resultMap="SysOaFinanceResult">
|
||||||
select sof.finance_id,
|
select sof.finance_id,
|
||||||
sof.project_id,
|
sof.project_id,
|
||||||
|
|||||||
Reference in New Issue
Block a user