gongchunyi
8 天以前 60f203c15fc1c7a35f1e742259e165391ede032a
src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -42,7 +42,7 @@
        </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.customer_contract_no,
@@ -62,8 +62,7 @@
        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,
        IFNULL(production_exists.has_production, FALSE) AS has_production_record
        IFNULL(shipping_status_counts.is_all_shipped, FALSE) AS is_fh
        FROM sales_ledger T1
        LEFT JOIN sys_user T2 ON T1.entry_person = T2.user_id
        LEFT JOIN (
@@ -75,13 +74,7 @@
        FROM shipping_info
        GROUP BY sales_ledger_id
        ) shipping_status_counts ON T1.id = shipping_status_counts.sales_ledger_id
        LEFT JOIN (
        SELECT DISTINCT po.sales_ledger_id,
        TRUE AS has_production
        FROM product_order po
        INNER JOIN product_work_order wo ON wo.product_order_id = po.id
        INNER JOIN production_product_main pm ON pm.work_order_id = wo.id
        ) production_exists ON T1.id = production_exists.sales_ledger_id
        <where>
            <if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
                AND T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
@@ -95,6 +88,30 @@
            <if test="salesLedgerDto.projectName != null and salesLedgerDto.projectName != '' ">
                AND T1.project_name LIKE CONCAT('%',#{salesLedgerDto.projectName},'%')
            </if>
            <if test="salesLedgerDto.shippingStatus != null and salesLedgerDto.shippingStatus != '' ">
                AND T1.id IN (
                SELECT slp.sales_ledger_id
                FROM sales_ledger_product slp
                LEFT JOIN (
                SELECT si.sales_ledger_product_id, IFNULL(SUM(spd.quantity), 0) AS shipped_quantity
                FROM shipping_info si
                LEFT JOIN shipping_product_detail spd ON si.id = spd.shipping_info_id
                WHERE si.status != '审核拒绝'
                GROUP BY si.sales_ledger_product_id
                ) ship ON ship.sales_ledger_product_id = slp.id
                WHERE slp.type = 1
                GROUP BY slp.sales_ledger_id
                HAVING
                <choose>
                    <when test="'已发货'.equals(salesLedgerDto.shippingStatus)">
                        SUM(CASE WHEN IFNULL(slp.quantity, 0) - IFNULL(ship.shipped_quantity, 0) &gt; 0 THEN 1 ELSE 0 END) = 0
                    </when>
                    <otherwise>
                        SUM(CASE WHEN IFNULL(slp.quantity, 0) - IFNULL(ship.shipped_quantity, 0) &gt; 0 THEN 1 ELSE 0 END) &gt; 0
                    </otherwise>
                </choose>
                )
            </if>
            <if test="salesLedgerDto.entryDateStart != null and salesLedgerDto.entryDateStart != '' ">
                AND T1.entry_date &gt;= DATE_FORMAT(#{salesLedgerDto.entryDateStart},'%Y-%m-%d')
            </if>
@@ -102,7 +119,7 @@
                AND T1.entry_date &lt;= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d')
            </if>
        </where>
        order by T1.entry_date desc
        order by T1.entry_date desc, T1.sales_contract_no desc
    </select>
    <select id="selectIncomeStats" resultType="com.ruoyi.home.dto.IncomeExpenseAnalysisDto">
@@ -117,16 +134,34 @@
        FROM sales_ledger
        GROUP BY customer_name
    </select>
    <select id="listSalesLedgerAndShipped" resultType="com.ruoyi.sales.dto.SalesLedgerDto">
        select distinct sl.id as 'disId', sl.* from
        sales_ledger sl
        left join sales_ledger_product slp on sl.id = slp.sales_ledger_id
        left join shipping_info si on slp.id = si.sales_ledger_product_id
        where si.status = '已发货'
        <if test="ew.customerName != null and ew.customerName != '' ">
            and sl.customer_name like concat('%',#{ew.customerName},'%')
        where si.status = '审核通过'
        <if test="ew.customerId != null and ew.customerId != '' ">
            and sl.customer_id = #{ew.customerId}
        </if>
        order by sl.execution_date desc
    </select>
</mapper>
    <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 1=1
        <if test="customerName != null and customerName != '' ">
            and c.customer_name like concat('%',#{customerName},'%')
        </if>
    </select>
</mapper>