5 天以前 f5cc69d226d73878bfb9a67b3835ff1842732ffe
src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -42,9 +42,10 @@
        </where>
    </select>
    <select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.pojo.SalesLedger">
    <select id="selectSalesLedgerListPage" resultType="com.ruoyi.sales.vo.SalesLedgerVo">
        SELECT T1.id,
        T1.sales_contract_no,
        T1.master_contract_no,
        T1.customer_contract_no,
        T1.project_name,
        T1.entry_date,
@@ -56,37 +57,47 @@
        T1.attachment_materials,
        T1.tenant_id,
        T1.contract_amount,
        T1.contract_amount as noInvoiceAmountTotal,
        T1.contract_amount AS noInvoiceAmountTotal,
        T1.execution_date,
        T2.nick_name AS entry_person_name,
        T1.payment_method,
        T1.delivery_date,
        DATEDIFF(T1.delivery_date, CURDATE()) AS delivery_days_diff,
        IFNULL(shipping_status_counts.is_all_shipped, FALSE) AS is_fh,
        T3.purchase_contract_number,
        T3.master_contract_no AS purchaseMasterContractNo,
        IFNULL(rs.total_return_num, 0) AS returnedQuantity,
        CASE
        WHEN shipping_status_counts.total_count = 0 THEN false
        WHEN shipping_status_counts.unshipped_count = 0 THEN true
        ELSE false
        END AS is_fh,
        CASE
        WHEN EXISTS (
        SELECT 1
        FROM product_order po2
        INNER JOIN product_work_order wo2 ON wo2.product_order_id = po2.id
        INNER JOIN production_product_main pm2 ON pm2.work_order_id = wo2.id
        WHERE po2.sales_ledger_id = T1.id
        LIMIT 1
        ) THEN true
        ELSE false
        END AS has_production_record
            WHEN IFNULL(rs.total_return_num, 0) = 0 THEN '无退货'
            WHEN IFNULL(rs.total_return_num, 0) >= IFNULL(shipping_qty.total_qty, 0) THEN '全部退货'
            ELSE '部分退货'
        END AS returnStatus
        FROM sales_ledger T1
        LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
        LEFT JOIN (
        SELECT sales_ledger_id,
        COUNT(*) as total_count,
        SUM(CASE WHEN status != '已发货' THEN 1 ELSE 0 END) as unshipped_count
        CASE
        WHEN SUM(CASE WHEN status != '已发货' THEN 1 ELSE 0 END) = 0 THEN TRUE
        ELSE FALSE
        END AS is_all_shipped
        FROM shipping_info
        GROUP BY sales_ledger_id
        ) shipping_status_counts ON T1.id = shipping_status_counts.sales_ledger_id
        LEFT JOIN purchase_ledger T3 ON T1.purchase_ledger_id = T3.id
        LEFT JOIN (
            SELECT si.sales_ledger_id, SUM(sor.stock_out_num) AS total_qty
            FROM shipping_info si
            LEFT JOIN stock_out_record sor ON sor.record_id = si.id AND sor.record_type = '13' AND sor.approval_status = 1
            GROUP BY si.sales_ledger_id
        ) shipping_qty ON shipping_qty.sales_ledger_id = T1.id
        LEFT JOIN (
            SELECT si.sales_ledger_id, SUM(rsp.num) AS total_return_num
            FROM return_sale_product rsp
            LEFT JOIN return_management rm ON rm.id = rsp.return_management_id
            LEFT JOIN shipping_info si ON si.id = rm.shipping_id
            WHERE rm.status = 1
            GROUP BY si.sales_ledger_id
        ) rs ON rs.sales_ledger_id = T1.id
        <where>
            <if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
@@ -97,6 +108,9 @@
            </if>
            <if test="salesLedgerDto.salesContractNo != null and salesLedgerDto.salesContractNo != '' ">
                AND T1.sales_contract_no LIKE CONCAT('%',#{salesLedgerDto.salesContractNo},'%')
            </if>
            <if test="salesLedgerDto.masterContractNo != null and salesLedgerDto.masterContractNo != '' ">
                AND T1.master_contract_no LIKE CONCAT('%',#{salesLedgerDto.masterContractNo},'%')
            </if>
            <if test="salesLedgerDto.projectName != null and salesLedgerDto.projectName != '' ">
                AND T1.project_name LIKE CONCAT('%',#{salesLedgerDto.projectName},'%')
@@ -134,5 +148,23 @@
        </if>
        order by sl.execution_date desc
    </select>
    <select id="selectPurchaseReportVoPage" resultType="com.ruoyi.purchase.vo.PurchaseReportVo">
        select sl.sales_contract_no customerContractNo,
               c.customer_name,
               sl.project_name,
               sl.contract_amount contractAmount,
               pl.contract_amount purchaseAmount,
               sl.contract_amount-pl.contract_amount balance,
               (sl.contract_amount-pl.contract_amount)/sl.contract_amount balanceRatio
        from sales_ledger sl
        left join purchase_ledger pl on sl.id = pl.sales_ledger_id
        left join customer c on sl.customer_id = c.id
        <where>
            <if test="customerName != null and customerName != '' ">
                and c.customer_name like concat('%',#{customerName},'%')
            </if>
        </where>
        order by sl.entry_date desc
    </select>
</mapper>
</mapper>