package cn.iocoder.yudao.module.finance.dal.mysql.ledger; import cn.iocoder.yudao.module.finance.dal.dataobject.ledger.FinLedgerEntryDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Collection; import java.util.List; /** * 总账 / 明细账 Mapper * * 只统计已过账(status = posted)的凭证分录;总账、明细账的余额在 Service 层按期间重算, * 保证口径与凭证状态一致 * * @author 超级管理员 */ @Mapper public interface FinLedgerMapper { /** * 查询指定科目(可多个)在指定日期区间内的已过账分录 * * @param subjectCodes 科目编码集合 * @param startDate 开始日期(含) * @param endDate 结束日期(含) * @param status 凭证状态 * @return 分录列表(按凭证日期、凭证编号、行号升序) */ List selectEntryList(@Param("subjectCodes") Collection subjectCodes, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate, @Param("status") Integer status); /** * 查询指定科目(可多个)在指定日期之前的已过账分录净额,即期初余额 * * @param subjectCodes 科目编码集合 * @param date 日期(不含) * @param status 凭证状态 * @return 净额,借方为正、贷方为负 */ BigDecimal selectBalanceBeforeDate(@Param("subjectCodes") Collection subjectCodes, @Param("date") LocalDate date, @Param("status") Integer status); }