zhang_nuo
17 小时以前 501aead9955b65d956f746f0ec2a480d87b4caf5
src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
@@ -5,12 +5,13 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
import com.ruoyi.home.dto.IncomeExpenseAnalysisDto;
import com.ruoyi.purchase.vo.PurchaseReportVo;
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.dto.SalesTrendDto;
import com.ruoyi.sales.dto.StatisticsTableDto;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.vo.SalesLedgerVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@@ -53,7 +54,7 @@
     * @param salesLedgerDto
     * @return
     */
    IPage<SalesLedger> selectSalesLedgerListPage(Page page, @Param("salesLedgerDto") SalesLedgerDto salesLedgerDto);
    IPage<SalesLedgerVo> selectSalesLedgerListPage(Page page, @Param("salesLedgerDto") SalesLedgerDto salesLedgerDto);
    /**
     * 按月份统计订单数、销售额(支持产品大类、客户名称筛选)
@@ -65,11 +66,13 @@
            "DATE_FORMAT(sl.entry_date, '%Y-%m') AS month, " +
            "COUNT(DISTINCT sl.id) AS order_count, " +  // 总订单数
            "SUM(slp.tax_inclusive_total_price) AS sales_amount, " +  // 销售额
            // 发货率 = 发货订单数 * 100 / 总订单数(保留2位小数,避免除0报错)
            "SUM(IFNULL(slp.quantity, 0)) AS product_quantity, " +  // 产品销售数量
            // 发货率 = 有发货记录的订单数 / 总订单数 * 100(保留2位小数,避免除0报错)
            "ROUND(IF(COUNT(DISTINCT sl.id) = 0, 0, " +
            "SUM(CASE WHEN slp.approve_status = 2 THEN 1 ELSE 0 END) / COUNT(DISTINCT sl.id) * 100), 2) AS ship_rate " +
            "COUNT(DISTINCT CASE WHEN si.id IS NOT NULL THEN sl.id END) / COUNT(DISTINCT sl.id) * 100), 2) AS ship_rate " +
            "FROM sales_ledger sl " +
            "LEFT JOIN sales_ledger_product slp ON sl.id = slp.sales_ledger_id " +
            "LEFT JOIN shipping_info si ON sl.id = si.sales_ledger_id " +
            "WHERE sl.entry_date &gt;= DATE_FORMAT(#{statisticsTableDto.entryDateStart}, '%Y-%m-01') " +
            "AND sl.entry_date &lt;= LAST_DAY(#{statisticsTableDto.entryDateEnd}) " +
            // 产品大类筛选
@@ -85,5 +88,8 @@
            "</script>")
    List<SalesTrendDto> statisticsTable(@Param("statisticsTableDto")StatisticsTableDto statisticsTableDto);
    IPage<SalesLedgerDto> listSalesLedger(Page page,@Param("ew") SalesLedgerDto salesLedgerDto);
    IPage<SalesLedgerDto> listSalesLedgerAndShipped(Page page, @Param("ew") SalesLedgerDto salesLedgerDto);
    IPage<PurchaseReportVo> selectPurchaseReportVoPage(Page page, @Param("customerName") String customerName);
}