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> selectMainPageList(@Param("page") Page<SysOaFinanceVo> page, @Param(Constants.WRAPPER) Wrapper<SysOaFinance> queryWrapper);
|
||||
|
||||
|
||||
/**
|
||||
* 项目进出账查询
|
||||
|
||||
@@ -59,8 +59,24 @@ public class SysOaFinanceServiceImpl implements ISysOaFinanceService {
|
||||
*/
|
||||
@Override
|
||||
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.between(bo.getBeginCreateTime()!= null && bo.getEndCreateTime()!= null,
|
||||
"sof.create_time", bo.getBeginCreateTime(), bo.getEndCreateTime());
|
||||
lqw.orderByDesc("create_time");
|
||||
lqw.orderByDesc("sof.create_time");
|
||||
return lqw;
|
||||
}
|
||||
|
||||
|
||||
@@ -97,6 +97,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
${ew.getCustomSqlSegment}
|
||||
</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 sof.finance_id,
|
||||
sof.project_id,
|
||||
|
||||
Reference in New Issue
Block a user