187 lines
6.4 KiB
XML
187 lines
6.4 KiB
XML
<?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.xkt.mapper.DailySaleProductMapper">
|
|
|
|
<select id="selectDailySale" resultType="com.ruoyi.xkt.dto.dailySale.DailySaleProdDTO">
|
|
SELECT
|
|
sp.store_id,
|
|
sp.id AS store_prod_id,
|
|
sp.prod_art_num,
|
|
COALESCE ( SUM( CASE WHEN ssd.sale_type = 1 THEN ssd.amount ELSE 0 END ), 0 ) AS saleAmount,
|
|
COALESCE ( SUM( CASE WHEN ssd.sale_type = 2 THEN ssd.amount ELSE 0 END ), 0 ) AS refundAmount,
|
|
COALESCE ( SUM( CASE WHEN ssd.sale_type = 1 THEN ssd.quantity ELSE 0 END ), 0 ) AS saleNum,
|
|
COALESCE ( SUM( CASE WHEN ssd.sale_type = 2 THEN ssd.quantity ELSE 0 END ), 0 ) AS refundNum
|
|
FROM
|
|
store_sale_detail ssd
|
|
LEFT JOIN store_product sp ON ssd.store_prod_id = sp.id
|
|
WHERE
|
|
ssd.del_flag = 0
|
|
AND ssd.voucher_date = #{voucherDate}
|
|
GROUP BY
|
|
sp.store_id,
|
|
sp.id
|
|
</select>
|
|
|
|
<select id="selectSaleRankList" resultType="com.ruoyi.xkt.dto.dailySale.CateSaleRankDTO">
|
|
SELECT
|
|
dsp.store_prod_id,
|
|
dsp.prod_art_num,
|
|
dsp.store_id,
|
|
s.store_name,
|
|
sp.prod_cate_id,
|
|
spc.`name` AS prodCateName,
|
|
SUM(dsp.sale_num) AS saleNum
|
|
FROM
|
|
daily_sale_product dsp
|
|
LEFT JOIN store_product sp ON dsp.store_prod_id = sp.id
|
|
LEFT JOIN store s ON dsp.store_id = s.id
|
|
LEFT JOIN sys_product_category spc ON sp.prod_cate_id = spc.id
|
|
WHERE
|
|
dsp.del_flag = 0
|
|
AND dsp.voucher_date BETWEEN #{oneMonthAgo} AND #{now}
|
|
GROUP BY
|
|
dsp.store_prod_id,
|
|
dsp.prod_art_num,
|
|
dsp.store_id,
|
|
sp.prod_cate_id,
|
|
spc.`name`
|
|
</select>
|
|
|
|
|
|
<select id="selectTop10SaleList" resultType="com.ruoyi.xkt.dto.store.StoreIndexSaleTop10ResDTO">
|
|
SELECT
|
|
dsp.store_prod_id,
|
|
dsp.prod_art_num,
|
|
sf.file_url AS mainPic,
|
|
SUM(IFNULL( dsp.sale_amount, 0 )) AS saleAmount,
|
|
SUM(IFNULL( dsp.refund_amount, 0 )) AS refundAmount,
|
|
SUM(IFNULL( dsp.sale_num, 0 )) AS saleNum,
|
|
SUM(IFNULL( dsp.refund_num, 0 )) AS refundNum,
|
|
CASE
|
|
WHEN SUM( IFNULL( dsp.sale_num, 0 )) = 0 THEN '0%'
|
|
ELSE CONCAT( ROUND( ABS( SUM( IFNULL( dsp.refund_num, 0 ))) * 1.0 / SUM( IFNULL( dsp.sale_num, 0 )) * 100, 2 ), '%')
|
|
END AS refundRate
|
|
FROM
|
|
daily_sale_product dsp
|
|
LEFT JOIN store_product_file spf ON dsp.store_prod_id = spf.store_prod_id AND spf.file_type = 1 AND spf.order_num = 1
|
|
LEFT JOIN sys_file sf ON spf.file_id = sf.id
|
|
WHERE
|
|
dsp.store_id = #{storeId}
|
|
AND dsp.del_flag = 0
|
|
AND dsp.voucher_date BETWEEN #{voucherDateStart} AND #{voucherDateEnd}
|
|
GROUP BY
|
|
dsp.store_prod_id,
|
|
dsp.prod_art_num,
|
|
sf.file_url
|
|
ORDER BY
|
|
saleAmount DESC
|
|
LIMIT 10
|
|
</select>
|
|
|
|
<select id="selectTop50ProdList" resultType="com.ruoyi.xkt.dto.dailyStoreTag.DailyStoreTagDTO">
|
|
SELECT
|
|
store_prod_id,
|
|
store_id
|
|
FROM
|
|
daily_sale_product
|
|
WHERE
|
|
voucher_date BETWEEN #{oneMonthAgo} AND #{yesterday}
|
|
GROUP BY
|
|
store_prod_id,
|
|
store_id
|
|
ORDER BY
|
|
SUM(IFNULL( sale_num, 0 )) DESC
|
|
LIMIT 50
|
|
</select>
|
|
|
|
<select id="prodSale1000List" resultType="com.ruoyi.xkt.dto.dailyStoreTag.DailyStoreTagDTO">
|
|
SELECT
|
|
store_prod_id,
|
|
SUM(IFNULL( sale_num, 0 )) AS count
|
|
FROM
|
|
daily_sale_product
|
|
WHERE
|
|
voucher_date BETWEEN #{oneMonthAgo} AND #{yesterday}
|
|
GROUP BY
|
|
store_prod_id
|
|
HAVING
|
|
count >= 1000
|
|
ORDER BY
|
|
count DESC
|
|
</select>
|
|
|
|
<select id="prodSaleTop10List" resultType="com.ruoyi.xkt.dto.dailyStoreTag.DailyStoreTagDTO">
|
|
SELECT
|
|
store_id,
|
|
store_prod_id,
|
|
SUM(IFNULL( sale_num, 0 )) AS count
|
|
FROM
|
|
daily_sale_product
|
|
WHERE
|
|
voucher_date BETWEEN #{oneMonthAgo} AND #{yesterday}
|
|
GROUP BY
|
|
store_prod_id,
|
|
store_id
|
|
ORDER BY
|
|
count DESC
|
|
LIMIT 10
|
|
</select>
|
|
|
|
<select id="prodSaleTop50List" resultType="com.ruoyi.xkt.dto.dailyStoreProd.DailyStoreProdSaleDTO">
|
|
SELECT
|
|
dsp.store_id,
|
|
dsp.store_prod_id,
|
|
COALESCE ( SUM( dsp.sale_num ), 0 ) AS count
|
|
FROM
|
|
daily_sale_product dsp
|
|
JOIN store_product sp ON dsp.store_prod_id = sp.id
|
|
WHERE
|
|
dsp.del_flag = 0
|
|
AND dsp.voucher_date BETWEEN #{oneMonthAgo} AND #{yesterday}
|
|
GROUP BY
|
|
dsp.store_id,
|
|
dsp.store_prod_id
|
|
ORDER BY
|
|
count DESC
|
|
LIMIT 50
|
|
</select>
|
|
|
|
<select id="prodCateSaleTop50List" resultType="com.ruoyi.xkt.dto.dailyStoreProd.DailyStoreProdSaleDTO">
|
|
WITH ranked_products AS (
|
|
SELECT
|
|
dsp.store_id,
|
|
sp.prod_cate_id,
|
|
dsp.store_prod_id,
|
|
spc.`name` AS prodCateName,
|
|
COALESCE ( SUM( dsp.sale_num ), 0 ) AS count,
|
|
ROW_NUMBER() OVER ( PARTITION BY sp.prod_cate_id ORDER BY COALESCE ( SUM( dsp.sale_num ), 0 ) DESC ) AS rank_in_category
|
|
FROM
|
|
daily_sale_product dsp
|
|
LEFT JOIN store_product sp ON dsp.store_prod_id = sp.id
|
|
LEFT JOIN sys_product_category spc ON sp.prod_cate_id = spc.id
|
|
WHERE
|
|
dsp.del_flag = 0
|
|
GROUP BY
|
|
sp.prod_cate_id,
|
|
dsp.store_prod_id,
|
|
dsp.store_id,
|
|
spc.`name`
|
|
) SELECT
|
|
store_id,
|
|
prod_cate_id,
|
|
store_prod_id,
|
|
prodCateName,
|
|
count
|
|
FROM
|
|
ranked_products
|
|
WHERE
|
|
rank_in_category <= 50
|
|
ORDER BY
|
|
prod_cate_id,
|
|
count DESC;
|
|
</select>
|
|
|
|
|
|
</mapper> |