shiyunteng
2026-06-22 838618d0d4a7dd3b585a3a7390fa389e555c9bb0
platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml
@@ -89,6 +89,9 @@
      <if test="queryDTO.industryId !=null">
         and bc.industry_id = #{queryDTO.industryId}
      </if>
      <if test="queryDTO.classId !=null">
         and bc.class_id = #{queryDTO.classId}
      </if>
      GROUP BY
      ranges.overdue_range,
      ranges.min_days
@@ -227,4 +230,63 @@
      ORDER BY
         ranges.min_days;
   </select>
   <select id="selectAgingTotalScale" resultType="com.by4cloud.platformx.business.vo.AgingVo">
      SELECT
      ranges.overdue_range,
      COALESCE (
      SUM(
      CASE
      WHEN cps.payment_status = '0' THEN
      cps.planned_amount
      WHEN cps.payment_status = '1' THEN
      cps.planned_amount - cps.actual_amount ELSE 0
      END
      ),
      0
      ) AS total_amount
      FROM
      (
      SELECT
      '0-30天' AS overdue_range,
      0 AS min_days,
      30 AS max_days UNION ALL
      SELECT
      '31-60天',
      31,
      60 UNION ALL
      SELECT
      '61-90天',
      61,
      90 UNION ALL
      SELECT
      '91-180天',
      91,
      180 UNION ALL
      SELECT
      '181-365天',
      181,
      365 UNION ALL
      SELECT
      '1年以上',
      366,
      999999
      ) AS ranges
      LEFT JOIN contract_payment_schedule cps ON cps.del_flag = '0'
      AND cps.payment_status NOT IN ( '2', '3' )
      AND cps.effective_end_date &lt; CURRENT_DATE
       AND DATEDIFF( CURRENT_DATE, cps.effective_end_date ) BETWEEN ranges.min_days
      AND ranges.max_days
      LEFT JOIN contract c ON cps.contract_id = c.id
      WHERE
      c.del_flag = '0'
      <if test="queryDTO.companyId !=null">
         and c.party_b_id = #{queryDTO.companyId}
      </if>
      GROUP BY
      ranges.overdue_range,
      ranges.min_days
      ORDER BY
      ranges.min_days;
   </select>
</mapper>