|
|
<?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="cn.iocoder.yudao.module.product.dal.mysql.harvestinfo.HarvestInfoMapper">
|
|
|
|
|
|
<!--
|
|
|
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
|
|
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
|
|
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
|
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
|
|
-->
|
|
|
|
|
|
<select id="getNumStatisticsOfYear" resultType="BigDecimal">
|
|
|
SELECT
|
|
|
SUM(phb.goods_num * bgi.conversion_value)
|
|
|
FROM
|
|
|
product_harvest_batch phb
|
|
|
LEFT JOIN product_harvest_info phi ON phb.harvest_id = phi.harverst_id
|
|
|
LEFT JOIN basic_goods_info bgi ON bgi.goods_id = phb.goods_id
|
|
|
WHERE
|
|
|
YEAR ( phi.harverst_time ) = YEAR (NOW())
|
|
|
</select>
|
|
|
|
|
|
<select id="getMonthYOYDatas" resultType="cn.iocoder.yudao.module.product.controller.admin.statistics.vo.MonthYOYRespVO">
|
|
|
SELECT
|
|
|
YEAR ( phi.harverst_time ) year,
|
|
|
MONTH ( phi.harverst_time ) month,
|
|
|
SUM( phb.goods_num * bgi.conversion_value ) sumNum,
|
|
|
CONCAT(ifnull(round((sum( phb.goods_num * bgi.conversion_value ) - ss )/ ss * 100, 2 ), 0 ), '%') rateData
|
|
|
FROM
|
|
|
product_harvest_info phi
|
|
|
LEFT JOIN product_harvest_batch phb ON phb.harvest_id = phi.harverst_id
|
|
|
LEFT JOIN basic_goods_info bgi ON bgi.goods_id = phb.goods_id
|
|
|
LEFT JOIN (
|
|
|
SELECT
|
|
|
MONTH( phi.harverst_time ) mm,
|
|
|
YEAR( phi.harverst_time ) yy,
|
|
|
SUM( phb.goods_num * bgi.conversion_value ) ss
|
|
|
FROM
|
|
|
product_harvest_info phi
|
|
|
LEFT JOIN product_harvest_batch phb ON phb.harvest_id = phi.harverst_id
|
|
|
LEFT JOIN basic_goods_info bgi ON bgi.goods_id = phb.goods_id
|
|
|
WHERE phi.deleted = 0 AND phb.deleted = 0
|
|
|
GROUP BY
|
|
|
mm, yy
|
|
|
) tongbi
|
|
|
ON MONTH ( phi.harverst_time ) = tongbi.mm
|
|
|
AND tongbi.yy = YEAR ( phi.harverst_time ) - 1
|
|
|
WHERE
|
|
|
YEAR(phi.harverst_time) = YEAR(now()) AND phi.deleted = 0 AND phb.deleted = 0
|
|
|
GROUP BY
|
|
|
year, month
|
|
|
ORDER BY
|
|
|
year DESC, month DESC;
|
|
|
</select>
|
|
|
|
|
|
<select id="getWeekYOYDatas" resultType="cn.iocoder.yudao.module.product.controller.admin.statistics.vo.WeekYOYRespVO">
|
|
|
SELECT
|
|
|
YEAR ( phi.harverst_time ) year,
|
|
|
MONTH ( phi.harverst_time ) month,
|
|
|
WEEK ( phi.harverst_time ) week,
|
|
|
sum( phb.goods_num * bgi.conversion_value ) sumNum,
|
|
|
concat(ifnull( round(( sum( phb.goods_num * bgi.conversion_value ) - ss )/ ss * 100, 2 ), 0 ), '%') rateData
|
|
|
FROM
|
|
|
product_harvest_info phi
|
|
|
LEFT JOIN product_harvest_batch phb ON phb.harvest_id = phi.harverst_id
|
|
|
LEFT JOIN basic_goods_info bgi ON bgi.goods_id = phb.goods_id
|
|
|
LEFT JOIN (
|
|
|
SELECT
|
|
|
MONTH( phi.harverst_time ) mm,
|
|
|
YEAR( phi.harverst_time ) yy,
|
|
|
WEEK( phi.harverst_time ) ww,
|
|
|
sum( phb.goods_num * bgi.conversion_value ) ss
|
|
|
FROM
|
|
|
product_harvest_info phi
|
|
|
LEFT JOIN product_harvest_batch phb ON phb.harvest_id = phi.harverst_id
|
|
|
LEFT JOIN basic_goods_info bgi ON bgi.goods_id = phb.goods_id
|
|
|
WHERE phi.deleted = 0 AND phb.deleted = 0
|
|
|
GROUP BY
|
|
|
mm,
|
|
|
yy,
|
|
|
ww
|
|
|
) tongbi ON MONTH ( phi.harverst_time ) = tongbi.mm
|
|
|
AND WEEK ( phi.harverst_time ) = tongbi.ww
|
|
|
AND tongbi.yy = YEAR ( phi.harverst_time ) - 1
|
|
|
WHERE
|
|
|
YEAR(phi.harverst_time) = YEAR(now()) AND phi.deleted = 0 AND phb.deleted = 0
|
|
|
GROUP BY
|
|
|
year, month, week
|
|
|
ORDER BY
|
|
|
year DESC, month DESC, week DESC;
|
|
|
</select>
|
|
|
|
|
|
<select id="getDatasGroupByGoodsId" resultType="cn.iocoder.yudao.module.product.controller.admin.statistics.vo.GoodsStatisticsDataRespVO">
|
|
|
SELECT
|
|
|
phb.goods_id,
|
|
|
bgi.goods_name,
|
|
|
SUM( phb.goods_num ) sumNum
|
|
|
FROM
|
|
|
product_harvest_info phi
|
|
|
LEFT JOIN product_harvest_batch phb ON phb.harvest_id = phi.harverst_id
|
|
|
LEFT JOIN basic_goods_info bgi ON bgi.goods_id = phb.goods_id
|
|
|
WHERE
|
|
|
phi.deleted = 0 AND phb.deleted = 0
|
|
|
<if test="type = 'month'">
|
|
|
AND MONTH ( phi.harverst_time ) = MONTH (NOW())
|
|
|
</if>
|
|
|
<if test="type = 'month'">
|
|
|
AND WEEK ( phi.harverst_time ) = WEEK (NOW())
|
|
|
</if>
|
|
|
GROUP BY
|
|
|
phb.goods_id
|
|
|
</select>
|
|
|
|
|
|
<select id="getTodayHarvestCount" resultType="BigDecimal">
|
|
|
SELECT
|
|
|
IFNULL(SUM( goods_num ), 0)
|
|
|
FROM
|
|
|
product_harvest_info phi
|
|
|
LEFT JOIN product_harvest_batch phb ON phb.harvest_id = phi.harverst_id
|
|
|
WHERE
|
|
|
phi.deleted = 0
|
|
|
AND phb.deleted = 0
|
|
|
AND TO_DAYS(phi.harverst_time) = TO_DAYS(NOW())
|
|
|
</select>
|
|
|
</mapper>
|