<?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="com.ruoyi.sales.mapper.ReceiptPaymentMapper"> 
 | 
    <select id="receiptPaymentListPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto"> 
 | 
        SELECT 
 | 
            T4.customer_id, 
 | 
            IFNULL(T5.invoice_total,0) AS invoice_total, 
 | 
            T1.receipt_payment_amount, 
 | 
            T1.receipt_payment_date 
 | 
        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 T4.id = T3.sales_ledger_id 
 | 
        LEFT JOIN ( 
 | 
            SELECT 
 | 
                T3.customer_id, 
 | 
                SUM( invoice_total ) AS invoice_total 
 | 
            FROM 
 | 
                invoice_ledger T1 
 | 
            LEFT JOIN invoice_registration_product T2 ON T1.invoice_registration_product_id = T2.id 
 | 
            LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id 
 | 
            GROUP BY T3.customer_id 
 | 
        ) T5 ON T5.customer_id = T4.customer_id 
 | 
        <where> 
 | 
            <if test="receiptPaymentDto.customerId != null"> 
 | 
                AND T4.customer_id = #{receiptPaymentDto.customerId} 
 | 
            </if> 
 | 
        </where> 
 | 
        ORDER BY T1.create_time ASC 
 | 
    </select> 
 | 
  
 | 
    <select id="receiptPaymentInfo" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto"> 
 | 
        SELECT 
 | 
            T1.id                 , 
 | 
            T1.sales_ledger_id        , 
 | 
            T1.sales_contract_no      , 
 | 
            T1.customer_id            , 
 | 
            T1.invoice_no             , 
 | 
            T1.invoice_amount         , 
 | 
            T1.tax_rate               , 
 | 
            T1.receipt_payment_type   , 
 | 
            T1.receipt_payment_amount , 
 | 
            T1.registrant             , 
 | 
            T1.receipt_payment_date   , 
 | 
            T1.create_time            , 
 | 
            T1.create_user            , 
 | 
            T1.update_time            , 
 | 
            T1.update_user            , 
 | 
            T1.tenant_id, 
 | 
            T1.invoice_ledger_id, 
 | 
            T3.customer_contract_no, 
 | 
            T2.customer_name 
 | 
        FROM receipt_payment T1 
 | 
                 LEFT JOIN customer T2 ON T1.customer_id = T2.id 
 | 
                 LEFT JOIN sales_ledger T3 ON T1.sales_ledger_id = T3.id 
 | 
        WHERE T1.id = #{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="bindInvoiceNoRegPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto"> 
 | 
        SELECT 
 | 
        T1.id , 
 | 
        T1.invoice_no , 
 | 
        T1.invoice_total , 
 | 
        T3.project_name, 
 | 
        T1.invoice_person , 
 | 
        T1.invoice_date , 
 | 
        T1.create_time , 
 | 
        T1.create_user , 
 | 
        T1.update_time , 
 | 
        T1.update_user , 
 | 
        T1.tenant_id , 
 | 
        T2.tax_rate, 
 | 
        T3.sales_contract_no, 
 | 
        T3.customer_contract_no, 
 | 
        T3.customer_name, 
 | 
        T4.invoiceFileName, 
 | 
        T5.product_category, 
 | 
        IFNULL(T6.receipt_payment_amount_total ,0) AS receipt_payment_amount_total, 
 | 
        (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total ,0)) AS no_receipt_amount 
 | 
        FROM invoice_ledger T1 
 | 
        LEFT JOIN invoice_registration_product T2 ON T2.id = T1.invoice_registration_product_id 
 | 
        LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id 
 | 
        LEFT JOIN ( 
 | 
        SELECT 
 | 
        invoice_ledger_id, 
 | 
        GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName 
 | 
        FROM invoice_ledger_file GROUP BY invoice_ledger_id 
 | 
        ) T4 ON T4.invoice_ledger_id = T1.id 
 | 
        LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id 
 | 
        LEFT JOIN ( 
 | 
        SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP 
 | 
        BY invoice_ledger_id 
 | 
        ) T6 ON T1.id = T6.invoice_ledger_id 
 | 
        <where> 
 | 
            <if test="req.customerName != null and req.customerName !=''"> 
 | 
                AND T3.customer_name LIKE CONCAT('%',#{req.customerName},'%') 
 | 
            </if> 
 | 
            <if test="req.invoiceLedgerId != null"> 
 | 
                AND T1.id = #{req.invoiceLedgerId} 
 | 
            </if> 
 | 
            <if test="req.customerContractNo != null and req.customerContractNo !=''"> 
 | 
                AND T3.customer_contract_no LIKE CONCAT('%',#{req.customerContractNo},'%') 
 | 
            </if> 
 | 
            <if test="req.projectName != null and req.projectName !=''"> 
 | 
                AND T3.project_name LIKE CONCAT('%',#{req.projectName},'%') 
 | 
            </if> 
 | 
            <if test="req.invoiceDateStart != null and req.invoiceDateStart != '' "> 
 | 
                AND T1.invoice_date >= DATE_FORMAT(#{req.invoiceDateStart},'%Y-%m-%d') 
 | 
            </if> 
 | 
            <if test="req.invoiceDateEnd != null and req.invoiceDateEnd != '' "> 
 | 
                AND  T1.invoice_date <= DATE_FORMAT(#{req.invoiceDateEnd},'%Y-%m-%d') 
 | 
            </if> 
 | 
        </where> 
 | 
        ORDER BY T2.create_time DESC 
 | 
    </select> 
 | 
  
 | 
    <select id="invoiceInfo" resultType="com.ruoyi.sales.dto.InvoiceLedgerDto"> 
 | 
        SELECT 
 | 
            T1.id, 
 | 
            T1.invoice_no, 
 | 
            T1.invoice_total , 
 | 
            T2.tax_rate, 
 | 
            T3.customer_name, 
 | 
            T3.sales_contract_no 
 | 
        FROM 
 | 
            invoice_ledger T1 
 | 
                LEFT JOIN 
 | 
            invoice_registration_product T2 ON T1.invoice_registration_product_id = T2.id 
 | 
                LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id 
 | 
        WHERE T1.id = #{id} 
 | 
    </select> 
 | 
  
 | 
    <select id="getReceiptAmount" resultType="java.math.BigDecimal"> 
 | 
        SELECT 
 | 
            SUM( receipt_payment_amount ) AS total_amount 
 | 
        FROM 
 | 
            ( 
 | 
                SELECT 
 | 
                    T1.receipt_payment_amount 
 | 
                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 T4.id = T3.sales_ledger_id 
 | 
                        LEFT JOIN ( 
 | 
                        SELECT 
 | 
                            T3.customer_id, 
 | 
                            SUM( invoice_total ) AS invoice_total 
 | 
                        FROM 
 | 
                            invoice_ledger T1 
 | 
                                LEFT JOIN invoice_registration_product T2 ON T1.invoice_registration_product_id = T2.id 
 | 
                                LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id 
 | 
                        GROUP BY 
 | 
                            T3.customer_id 
 | 
                    ) T5 ON T5.customer_id = T4.customer_id 
 | 
                WHERE 
 | 
                    T4.customer_id = #{customerId} 
 | 
  
 | 
                ORDER BY 
 | 
                    T1.create_time ASC 
 | 
                    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.id, 
 | 
        T1.receipt_payment_date, 
 | 
        T5.customer_name, 
 | 
        T1.receipt_payment_amount, 
 | 
        T1.receipt_payment_type, 
 | 
        T1.registrant, 
 | 
        T1.create_time, 
 | 
        T4.project_name, 
 | 
        T4.sales_contract_no, 
 | 
        T4.customer_contract_no 
 | 
        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 >= date_format(#{params.receiptPaymentDateStart},'%Y-%m-%d') 
 | 
            </if> 
 | 
            <if test="params.receiptPaymentDateEnd != null and params.receiptPaymentDateEnd != '' "> 
 | 
                AND T1.receipt_payment_date <= date_format(#{params.receiptPaymentDateEnd}, '%Y-%m-%d') 
 | 
            </if> 
 | 
            <if test="params.projectName != null and params.projectName != '' "> 
 | 
                AND T4.project_name LIKE CONCAT('%',#{params.projectName},'%') 
 | 
            </if> 
 | 
            <if test="params.customerContractNo != null and params.customerContractNo != '' "> 
 | 
                AND T4.customer_contract_no LIKE CONCAT('%',#{params.customerContractNo},'%') 
 | 
            </if> 
 | 
            <if test="params.salesContractNo != null and params.salesContractNo != '' "> 
 | 
                AND T4.sales_contract_no LIKE CONCAT('%',#{params.salesContractNo},'%') 
 | 
            </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> 
 | 
    <select id="bindInvoiceNoRegListAll" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto"> 
 | 
        SELECT 
 | 
            T1.id , 
 | 
            T1.invoice_no , 
 | 
            T1.invoice_total , 
 | 
            T3.project_name, 
 | 
            T1.invoice_person , 
 | 
            T1.invoice_date , 
 | 
            T1.create_time , 
 | 
            T1.create_user , 
 | 
            T1.update_time , 
 | 
            T1.update_user , 
 | 
            T1.tenant_id , 
 | 
            T2.tax_rate, 
 | 
            T3.sales_contract_no, 
 | 
            T3.customer_contract_no, 
 | 
            T3.customer_name, 
 | 
            T4.invoiceFileName, 
 | 
            T5.product_category, 
 | 
            IFNULL(T6.receipt_payment_amount_total ,0) AS receipt_payment_amount_total, 
 | 
            (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total ,0)) AS no_receipt_amount 
 | 
        FROM invoice_ledger T1 
 | 
                 LEFT JOIN invoice_registration_product T2 ON T2.id = T1.invoice_registration_product_id 
 | 
                 LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id 
 | 
                 LEFT JOIN ( 
 | 
            SELECT 
 | 
                invoice_ledger_id, 
 | 
                GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName 
 | 
            FROM invoice_ledger_file GROUP BY invoice_ledger_id 
 | 
        ) T4 ON T4.invoice_ledger_id = T1.id 
 | 
                 LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id 
 | 
                 LEFT JOIN ( 
 | 
            SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP 
 | 
                BY invoice_ledger_id 
 | 
        ) T6 ON T1.id = T6.invoice_ledger_id 
 | 
    </select> 
 | 
    <select id="bindInvoiceNoRegListByIds" resultType="com.ruoyi.sales.dto.ReceiptPaymentExeclDto"> 
 | 
        SELECT 
 | 
        T1.id , 
 | 
        T1.invoice_no , 
 | 
        T1.invoice_total , 
 | 
        T3.project_name, 
 | 
        T1.invoice_person , 
 | 
        T1.invoice_date , 
 | 
        T1.create_time , 
 | 
        T1.create_user , 
 | 
        T1.update_time , 
 | 
        T1.update_user , 
 | 
        T1.tenant_id , 
 | 
        T2.tax_rate, 
 | 
        T3.sales_contract_no, 
 | 
        T3.customer_contract_no, 
 | 
        T3.customer_name, 
 | 
        T4.invoiceFileName, 
 | 
        T5.product_category, 
 | 
        IFNULL(T6.receipt_payment_amount_total ,0) AS receipt_payment_amount_total, 
 | 
        (T1.invoice_total - IFNULL(T6.receipt_payment_amount_total ,0)) AS no_receipt_amount 
 | 
        FROM invoice_ledger T1 
 | 
        LEFT JOIN invoice_registration_product T2 ON T2.id = T1.invoice_registration_product_id 
 | 
        LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id 
 | 
        LEFT JOIN ( 
 | 
        SELECT 
 | 
        invoice_ledger_id, 
 | 
        GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName 
 | 
        FROM invoice_ledger_file GROUP BY invoice_ledger_id 
 | 
        ) T4 ON T4.invoice_ledger_id = T1.id 
 | 
        LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id 
 | 
        LEFT JOIN ( 
 | 
        SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP 
 | 
        BY invoice_ledger_id 
 | 
        ) T6 ON T1.id = T6.invoice_ledger_id 
 | 
        <where> 
 | 
        <if test="ids.size() > 0"> 
 | 
            T1.id IN 
 | 
            <foreach item="item" collection="ids" separator="," open="(" close=")"> 
 | 
                #{item} 
 | 
            </foreach> 
 | 
        </if> 
 | 
        <if test="tenantId != null " > 
 | 
            AND T1.tenant_id = #{tenantId} 
 | 
        </if> 
 | 
        </where> 
 | 
  
 | 
    </select> 
 | 
  
 | 
</mapper> 
 |