liyong
2025-06-19 d2885d323c9a75e62e49b7cb5ba48165e0e489bf
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -64,6 +64,7 @@
            T1.id                ,
            T1.invoice_no        ,
            T1.invoice_total    ,
            T3.project_name,
            T1.invoice_person    ,
            T1.invoice_date      ,
            T1.create_time       ,
@@ -142,4 +143,171 @@
                    LIMIT #{total} ) AS limited_rows
    </select>
    <select id="receiptPaymentHistoryList" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
        SELECT
            T1.receipt_payment_date,
            T5.customer_name,
            T1.receipt_payment_amount,
            T1.receipt_payment_type,
            T1.registrant,
            T1.create_time
        FROM
            receipt_payment T1
                LEFT JOIN
            invoice_ledger T2 ON T1.invoice_ledger_id = T2.id
                LEFT JOIN invoice_registration_product T3 ON T2.invoice_registration_product_id = T3.id
                LEFT JOIN sales_ledger T4 ON T3.sales_ledger_id = T4.id
                LEFT JOIN customer T5 ON T5.id = T4.customer_id
        <where>
            <if test="params.searchText != null and params.searchText != '' ">
                T5.customer_name LIKE CONCAT('%',#{params.searchText},'%')
            </if>
        </where>
        ORDER BY T1.receipt_payment_date DESC
    </select>
    <select id="receiptPaymentHistoryListPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
        SELECT
        T1.receipt_payment_date,
        T5.customer_name,
        T1.receipt_payment_amount,
        T1.receipt_payment_type,
        T1.registrant,
        T1.create_time,
        T4.project_name
        FROM
        receipt_payment T1
        LEFT JOIN
        invoice_ledger T2 ON T1.invoice_ledger_id = T2.id
        LEFT JOIN invoice_registration_product T3 ON T2.invoice_registration_product_id = T3.id
        LEFT JOIN sales_ledger T4 ON T3.sales_ledger_id = T4.id
        LEFT JOIN customer T5 ON T5.id = T4.customer_id
        <where>
            <if test="params.searchText != null and params.searchText != '' ">
                T5.customer_name LIKE CONCAT('%',#{params.searchText},'%')
            </if>
            <if test="params.receiptPaymentDateStart != null and params.receiptPaymentDateStart != '' ">
                AND T1.receipt_payment_date &gt;= date_format(#{params.receiptPaymentDateStart},'%Y-%m-%d')
            </if>
            <if test="params.receiptPaymentDateEnd != null and params.receiptPaymentDateEnd != '' ">
                AND T1.receipt_payment_date &lt;= date_format(#{params.receiptPaymentDateEnd}, '%Y-%m-%d')
            </if>
        </where>
        ORDER BY T1.receipt_payment_date DESC
    </select>
<!--    SELECT-->
<!--    *-->
<!--    FROM-->
<!--    (-->
<!--    SELECT-->
<!--    receipt_payment_amount AS receiptAmount,-->
<!--    receipt_payment_date AS happenTime,-->
<!--    0 AS type,-->
<!--    0 AS invoiceAmount-->
<!--    FROM-->
<!--    receipt_payment-->
<!--    WHERE-->
<!--    invoice_ledger_id IN (-->
<!--    SELECT-->
<!--    id-->
<!--    FROM-->
<!--    invoice_ledger-->
<!--    WHERE-->
<!--    invoice_registration_product_id IN (-->
<!--    SELECT-->
<!--    id-->
<!--    FROM-->
<!--    invoice_registration_product-->
<!--    WHERE-->
<!--    sales_ledger_id IN ( SELECT id FROM sales_ledger WHERE customer_id =  #{customerId} ))) UNION-->
<!--    SELECT-->
<!--    0 AS receiptAmount,-->
<!--    invoice_date AS happenTime,-->
<!--    1 AS type,-->
<!--    invoice_total AS invoiceAmount-->
<!--    FROM-->
<!--    invoice_ledger-->
<!--    WHERE-->
<!--    invoice_registration_product_id IN (-->
<!--    SELECT-->
<!--    id-->
<!--    FROM-->
<!--    invoice_registration_product-->
<!--    WHERE-->
<!--    sales_ledger_id IN ( SELECT id FROM sales_ledger WHERE customer_id = #{customerId} ))-->
<!--    AND invoice_date IS NOT NULL-->
<!--    ) T1-->
<!--    ORDER BY-->
<!--    T1.happenTime ASC-->
    <select id="customerInteractions" resultType="com.ruoyi.sales.dto.CustomerInteractionDto">
        SELECT
            rp.receipt_payment_amount AS receiptAmount,
            rp.receipt_payment_date   AS happenTime,
            0                          AS type,
            0                          AS invoiceAmount
        FROM
            receipt_payment rp
        WHERE EXISTS (
            SELECT 1
            FROM invoice_ledger il
                     JOIN invoice_registration_product irp ON il.invoice_registration_product_id = irp.id
                     JOIN sales_ledger sl ON irp.sales_ledger_id = sl.id
            WHERE sl.customer_id = #{customerId}
              AND rp.invoice_ledger_id = il.id
        )
        UNION ALL
        SELECT
            0 AS receiptAmount,
            il.invoice_date AS happenTime,
            1 AS type,
            il.invoice_total AS invoiceAmount
        FROM
            invoice_ledger il
                JOIN invoice_registration_product irp ON il.invoice_registration_product_id = irp.id
                JOIN sales_ledger sl ON irp.sales_ledger_id = sl.id
        WHERE
            sl.customer_id =  #{customerId}
          AND il.invoice_date IS NOT NULL
        ORDER BY happenTime ASC;
    </select>
    <select id="receiptPaymentHistoryListNoPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
        SELECT
        T1.id,
        T1.receipt_payment_date,
        T5.customer_name,
        T1.receipt_payment_amount,
        T1.receipt_payment_type,
        T1.registrant,
        T1.create_time
        FROM
        receipt_payment T1
        LEFT JOIN
        invoice_ledger T2 ON T1.invoice_ledger_id = T2.id
        LEFT JOIN invoice_registration_product T3 ON T2.invoice_registration_product_id = T3.id
        LEFT JOIN sales_ledger T4 ON T3.sales_ledger_id = T4.id
        LEFT JOIN customer T5 ON T5.id = T4.customer_id
        WHERE T1.invoice_ledger_id = #{params.invoiceLedgerId}
        ORDER BY T1.receipt_payment_date DESC
    </select>
    <select id="receiptPaymentListByProdRegId" resultType="com.ruoyi.sales.pojo.ReceiptPayment">
        SELECT
            T1.*
        FROM
            receipt_payment T1
                LEFT JOIN invoice_ledger T2 ON T1.invoice_ledger_id = T2.id
        WHERE
            T2.invoice_registration_product_id = #{invoiceRegistrationProductId}
    </select>
</mapper>