gongchunyi
2026-08-06 0c0aacce3755912bed0e576b209444411d54b5f7
feat: 销售台账新增未/已发货
已修改2个文件
27 ■■■■■ 文件已修改
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/SalesLedgerMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -25,6 +25,9 @@
    private String entryDateStart;
    private String entryDateEnd;
    @Schema(description = "发货状态筛选:未发货/已发货")
    private String shippingStatus;
    private String salesman;
    private Long customerId;
src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -88,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>