<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.customersettlement.CustomerSettlementMapper">

    <!--
        一般情况下，尽可能使用 Mapper 进行 CRUD 增删改查即可。
        无法满足的场景，例如说多表关联查询，才使用 XML 编写 SQL。
        代码生成器暂时只生成 Mapper XML 文件本身，更多推荐 MybatisX 快速开发插件来生成查询。
        文档可见：https://www.iocoder.cn/MyBatis/x-plugins/
     -->

    <select id="selectTotal" resultType="cn.iocoder.yudao.module.system.controller.admin.customersettlement.vo.StatisticsVO">
        SELECT
            SUM(b.pre_settlement_amount) AS preSettlementTotal,
            SUM(b.should_settlement_amount) AS shouldSettlementTotal,
            SUM(b.deduction_amount) AS deductionTotal,
            SUM(b.settlement_amount) AS settlementTotal,
            SUM(a.payment_amount) AS receivedTotal
        FROM
            system_customer_settlement a
            LEFT JOIN system_settlement_item b ON b.settlement_id = a.id
        WHERE
            a.deleted = 0
            AND b.deleted = 0
            <if test="reqVO.customerId != null">
                AND a.customer_id = #{reqVO.customerId}
            </if>
            <if test="reqVO.businessType != null">
                AND b.business_type = #{reqVO.businessType}
            </if>
        <if test="reqVO.settlementMonth != null and reqVO.settlementMonth.length > 0">
            <if test="reqVO.settlementMonth[0] != null">
                and a.settlement_month &gt;= #{reqVO.settlementMonth[0]}
            </if>
            <if test="reqVO.settlementMonth[1] != null">
                and a.settlement_month &lt;= #{reqVO.settlementMonth[1]}
            </if>
        </if>
    </select>
</mapper>