feat(core): RecruitLedger/MaintainLedger sumByContract 메서드 추가 (P1 보강)

P1-1-c RegulatoryLimitChecker의 누적 수수료 합산용 TODO 해결.

추가 메서드:
- RecruitLedgerMapper.sumByContract(contractId)
- RecruitLedgerMapper.sumFirstYearByContract(contractId) — commission_year=1 한정
- MaintainLedgerMapper.sumByContract(contractId)

XML: COALESCE(SUM(agent_amount), 0) 패턴 (NULL 안전).
참고: V5 DDL 실제 컬럼명은 agent_amount (commission_amount 아님).

api-developer가 RegulatoryLimitChecker에서 이 메서드를 호출하면 TODO 해소.
This commit is contained in:
GA Pro
2026-05-13 00:50:57 +09:00
parent cc5d0e55f2
commit 1aa31deb77
10 changed files with 372 additions and 0 deletions
@@ -26,4 +26,7 @@ public interface MaintainLedgerMapper {
BigDecimal sumByMonth(@Param("settleMonth") String settleMonth);
BigDecimal sumByAgentMonth(@Param("agentId") Long agentId,
@Param("settleMonth") String settleMonth);
/** 계약별 유지 원장 수수료 합산 (1200%룰 누적 검증용) */
BigDecimal sumByContract(@Param("contractId") Long contractId);
}
@@ -30,4 +30,10 @@ public interface RecruitLedgerMapper {
/** 정산월 + 설계사 합계 */
BigDecimal sumByAgentMonth(@Param("agentId") Long agentId,
@Param("settleMonth") String settleMonth);
/** 계약별 신계약 원장 수수료 합산 (1200%룰 누적 검증용) */
BigDecimal sumByContract(@Param("contractId") Long contractId);
/** 계약별 1차년도 수수료 합산 (1차년도 한도 검증용) */
BigDecimal sumFirstYearByContract(@Param("contractId") Long contractId);
}
@@ -112,4 +112,9 @@
WHERE agent_id = #{agentId} AND settle_month = #{settleMonth}
</select>
<select id="sumByContract" resultType="java.math.BigDecimal">
SELECT COALESCE(SUM(agent_amount), 0) FROM maintain_ledger
WHERE contract_id = #{contractId}
</select>
</mapper>
@@ -129,4 +129,14 @@
WHERE agent_id = #{agentId} AND settle_month = #{settleMonth}
</select>
<select id="sumByContract" resultType="java.math.BigDecimal">
SELECT COALESCE(SUM(agent_amount), 0) FROM recruit_ledger
WHERE contract_id = #{contractId}
</select>
<select id="sumFirstYearByContract" resultType="java.math.BigDecimal">
SELECT COALESCE(SUM(agent_amount), 0) FROM recruit_ledger
WHERE contract_id = #{contractId} AND commission_year = 1
</select>
</mapper>