From 72b971c98c46531064d74b68fc8fe8864ed0b544 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 08 Nov 2022 09:04:56 +0800
Subject: [PATCH] 大屏溯源统计次数sql修改
---
src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml | 339 +++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 296 insertions(+), 43 deletions(-)
diff --git a/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml b/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml
index b1738b1..b5ab481 100644
--- a/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml
+++ b/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml
@@ -4,9 +4,10 @@
<!--自定义查询农产品库存分页数据-->
<select id="selectFarmProductStockPage" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
- select sfps.strain_id strainId,sum(sfps.weight) weight,ss.url,ss.strain_name strainName from
+ select sfps.id,sfps.strain_id strainId,sfps.land_id,sum(sfps.weight) weight,ss.url,ss.strain_name strainName from
sys_farm_product_stock sfps
left join sys_strain ss on ss.id = sfps.strain_id
+ left join sys_land sl on sl.id = sfps.land_id
where 1=1
<if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
and sfps.strain_id = #{farmProductStock.strainId}
@@ -26,15 +27,101 @@
<if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
and sfps.tenant_id = #{farmProductStock.tenantId}
</if>
- group by sfps.strain_id,ss.url,ss.strain_name
+ <if test="farmProductStock.farmId!=null and farmProductStock.farmId!=''">
+ and sl.farm_id = #{farmProductStock.farmId}
+ </if>
+ group by sfps.id,sfps.strain_id,ss.url,ss.strain_name,sfps.land_id
+ </select>
+
+ <select id="selectFarmProductStockPageCount" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
+ SELECT a.strainId,SUM(weight) weight,a.url,a.strainName FROM
+ (SELECT
+ sfps.id,
+ sfps.strain_id AS strainId,
+ sfps.land_id,
+ sum( sfps.weight ) AS weight,
+ ss.url,
+ ss.strain_name AS strainName
+ FROM
+ sys_farm_product_stock sfps
+ LEFT JOIN sys_strain ss ON ss.id = sfps.strain_id
+ LEFT JOIN sys_land sl ON sl.id = sfps.land_id
+ WHERE
+ 1 = 1
+ <if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
+ and sfps.strain_id = #{farmProductStock.strainId}
+ </if>
+ <if test="farmProductStock.leaves!=null and farmProductStock.leaves!=''">
+ and sfps.leaves = #{farmProductStock.leaves}
+ </if>
+ <if test="farmProductStock.startTime!=null and farmProductStock.startTime!=''">
+ and sfps.time >= #{farmProductStock.startTime}
+ </if>
+ <if test="farmProductStock.endTime!=null and farmProductStock.endTime!=''">
+ and sfps.time <= #{farmProductStock.endTime}
+ </if>
+ <if test="farmProductStock.deptId!=null and farmProductStock.deptId!=''">
+ and sfps.dept_id = #{farmProductStock.deptId}
+ </if>
+ <if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
+ and sfps.tenant_id = #{farmProductStock.tenantId}
+ </if>
+ <if test="farmProductStock.farmId!=null and farmProductStock.farmId!=''">
+ and sl.farm_id = #{farmProductStock.farmId}
+ </if>
+ GROUP BY
+ sfps.id,
+ sfps.strain_id,
+ ss.url,
+ ss.strain_name,
+ sfps.land_id
+ ) a WHERE weight !=0 GROUP BY strainId
+ </select>
+
+ <select id="selectFarmProductStockPages" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
+ select sfps.strain_id strainId,sfps.land_id,sum(sfps.weight) weight,ss.url,ss.strain_name strainName from
+ sys_farm_product_stock sfps
+ left join sys_strain ss on ss.id = sfps.strain_id
+ left join sys_land sl on sl.id = sfps.land_id
+ where 1=1
+ <if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
+ and sfps.strain_id = #{farmProductStock.strainId}
+ </if>
+ <if test="farmProductStock.leaves!=null and farmProductStock.leaves!=''">
+ and sfps.leaves = #{farmProductStock.leaves}
+ </if>
+ <if test="farmProductStock.startTime!=null and farmProductStock.startTime!=''">
+ and sfps.time >= #{farmProductStock.startTime}
+ </if>
+ <if test="farmProductStock.endTime!=null and farmProductStock.endTime!=''">
+ and sfps.time <= #{farmProductStock.endTime}
+ </if>
+ <if test="farmProductStock.deptId!=null and farmProductStock.deptId!=''">
+ and sfps.dept_id = #{farmProductStock.deptId}
+ </if>
+ <if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
+ and sfps.tenant_id = #{farmProductStock.tenantId}
+ </if>
+ <if test="farmProductStock.farmId!=null and farmProductStock.farmId!=''">
+ and sl.farm_id = #{farmProductStock.farmId}
+ </if>
+ group by sfps.strain_id,ss.url,ss.strain_name,sfps.land_id
+ </select>
+
+ <!--根据农场id和品种类型查询 关系:农产品库存表关联地块 -》 地块关联农场 -》 需要联合查询 -->
+ <select id="findFarmProductStockByFarmIdAndStrainId" resultType="org.springblade.modules.farmplant.entity.FarmProductStock">
+ select a.* from sys_farm_product_stock a
+ left join sys_land b on a.land_id = b.id
+ where 1=1 and a.strain_id = #{strainId} and b.farm_id = #{farmId}
</select>
<!--查询农产品库存数据-->
<select id="statisticsProduct" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
- select sfps.strain_id strainId,sum(sfps.weight) weight,ss.url,ss.strain_name strainName from
+ select sfps.id,sfps.strain_id strainId,sum(sfps.weight) weight,ss.url,ss.strain_name strainName from
sys_farm_product_stock sfps
left join sys_strain ss on ss.id = sfps.strain_id
+ LEFT JOIN sys_land sl ON sl.id = sfps.land_id
where 1=1
<if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
and sfps.strain_id = #{farmProductStock.strainId}
@@ -54,7 +141,10 @@
<if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
and sfps.tenant_id = #{farmProductStock.tenantId}
</if>
- group by sfps.strain_id,ss.url,ss.strain_name
+ <if test="farmProductStock.farmId!=null and farmProductStock.farmId!=''">
+ and sl.farm_id = #{farmProductStock.farmId}
+ </if>
+ group by sfps.id,sfps.strain_id,ss.url,ss.strain_name
</select>
<!--大屏产量每个月统计-->
@@ -67,45 +157,194 @@
<!--大屏经营概况库存数量统计-->
<select id="statisticsStock" resultType="java.util.HashMap">
- SELECT
- SUM( stock.weight ) AS sum ,
- SUM( stock.recovery ) AS cssum
- FROM
- sys_farm_product_stock AS stock
+ SELECT SUM( stock.weight ) AS sum,SUM( stock.recovery ) AS cssum FROM sys_farm_product_stock AS stock
+ left join sys_land sl on sl.id = stock.land_id
WHERE
1 = 1
<if test="year!=null and year!=''">
and YEAR ( stock.time ) = #{year}
</if>
- <if test="deptId!=null and deptId!=''">
- and stock.dept_id = #{deptId}
+ <if test="farmId!=null and farmId!=''">
+ and sl.farm_id = #{farmId}
</if>
</select>
+ <!--按年统计产量-->
+<!-- <select id="statisticsStockYear" resultType="java.util.HashMap">-->
+<!-- SELECT-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 1 THEN weight END ), 0 ) AS '1',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 2 THEN weight END ), 0 ) AS '2',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 3 THEN weight END ), 0 ) AS '3',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 4 THEN weight END ), 0 ) AS '4',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 5 THEN weight END ), 0 ) AS '5',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 6 THEN weight END ), 0 ) AS '6',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 7 THEN weight END ), 0 ) AS '7',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 8 THEN weight END ), 0 ) AS '8',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 9 THEN weight END ), 0 ) AS '9',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 10 THEN weight END ), 0 ) AS '10',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 11 THEN weight END ), 0 ) AS '11',-->
+<!-- IFNULL( SUM( CASE WHEN MONTH ( time ) = 12 THEN weight END ), 0 ) AS '12'-->
+<!-- FROM-->
+<!-- sys_recovery-->
+<!-- where-->
+<!-- 1 = 1-->
+<!-- <if test="year!=null and year!=''">-->
+<!-- and YEAR ( time ) = #{year}-->
+<!-- </if>-->
+<!-- <if test="deptId!=null and deptId!=''">-->
+<!-- and dept_id = #{deptId}-->
+<!-- </if>-->
+<!-- </select>-->
+ <select id="statisticsStockYear" resultType="java.util.HashMap">
+ select m.id time, IFNULL(b,0) num from
+ (
+ select 1 as id union
+ select 2 union
+ select 3 union
+ select 4 union
+ select 5 union
+ select 6 union
+ select 7 union
+ select 8 union
+ select 9 union
+ select 10 union
+ select 11 union
+ select 12
+ ) m
+ left join
+ (
+ select month(ssr.time) a,sum(weight) b from sys_recovery ssr
+ left join sys_land sl on sl.id = ssr.land_id
+ where year(ssr.time) = #{year}
+ and sl.farm_id = #{farmId}
+ GROUP BY month(ssr.time)
+ ) n
+ on m.id = n.a
+ order by id
+ </select>
<!--按月份统计产量-->
<select id="statisticsStockMonth" resultType="java.util.HashMap">
SELECT
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 1 THEN weight END ), 0 ) AS '1',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 2 THEN weight END ), 0 ) AS '2',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 3 THEN weight END ), 0 ) AS '3',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 4 THEN weight END ), 0 ) AS '4',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 5 THEN weight END ), 0 ) AS '5',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 6 THEN weight END ), 0 ) AS '6',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 7 THEN weight END ), 0 ) AS '7',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 8 THEN weight END ), 0 ) AS '8',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 9 THEN weight END ), 0 ) AS '9',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 10 THEN weight END ), 0 ) AS '10',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 11 THEN weight END ), 0 ) AS '11',
- IFNULL( SUM( CASE WHEN MONTH ( time ) = 12 THEN weight END ), 0 ) AS '12'
+ DAY(lefttable.date) time,
+ IFNULL( righttable.m, '0' ) AS num
FROM
- sys_recovery
- where
- 1 = 1
- <if test="year!=null and year!=''">
- and YEAR ( time ) = #{year}
- </if>
- <if test="deptId!=null and deptId!=''">
- and dept_id = #{deptId}
- </if>
+ (
+ SELECT
+ ADDDATE( y.FIRST, x.d - 1 ) AS date
+ FROM
+ (
+ SELECT
+ 1 AS d UNION ALL
+ SELECT
+ 2 UNION ALL
+ SELECT
+ 3 UNION ALL
+ SELECT
+ 4 UNION ALL
+ SELECT
+ 5 UNION ALL
+ SELECT
+ 6 UNION ALL
+ SELECT
+ 7 UNION ALL
+ SELECT
+ 8 UNION ALL
+ SELECT
+ 9 UNION ALL
+ SELECT
+ 10 UNION ALL
+ SELECT
+ 11 UNION ALL
+ SELECT
+ 12 UNION ALL
+ SELECT
+ 13 UNION ALL
+ SELECT
+ 14 UNION ALL
+ SELECT
+ 15 UNION ALL
+ SELECT
+ 16 UNION ALL
+ SELECT
+ 17 UNION ALL
+ SELECT
+ 18 UNION ALL
+ SELECT
+ 19 UNION ALL
+ SELECT
+ 20 UNION ALL
+ SELECT
+ 21 UNION ALL
+ SELECT
+ 22 UNION ALL
+ SELECT
+ 23 UNION ALL
+ SELECT
+ 24 UNION ALL
+ SELECT
+ 25 UNION ALL
+ SELECT
+ 26 UNION ALL
+ SELECT
+ 27 UNION ALL
+ SELECT
+ 28 UNION ALL
+ SELECT
+ 29 UNION ALL
+ SELECT
+ 30 UNION ALL
+ SELECT
+ 31
+ ) x,
+ (
+ SELECT
+ CONCAT( #{year}, '-01' ) AS FIRST,
+ DAY ( LAST_DAY( str_to_date( concat( #{year}, '-01' ), '%Y-%m-%d' ) ) ) AS last
+ ) y
+ WHERE
+ x.d <= y.last
+ AND ADDDATE( y.FIRST, x.d - 1 ) <= CURDATE( )
+ ) AS lefttable
+ LEFT JOIN (
+ SELECT
+ IFNULL( sum( weight ), 0 ) AS m,
+ DATE_FORMAT( recovery.time, '%Y-%c-%d' ) AS gptime
+ FROM
+ sys_recovery recovery
+ left join sys_land sl on sl.id = recovery.land_id
+ WHERE DATE_FORMAT( recovery.time, '%Y-%m' ) = #{year}
+ and sl.farm_id = #{farmId}
+ GROUP BY
+ gptime
+ ) AS righttable ON DATE_FORMAT( lefttable.date, '%Y-%c-%d' ) = righttable.gptime
+ ORDER BY time
+ </select>
+ <!--按日统计产量-->
+ <select id="statisticsStockDay" resultType="java.util.HashMap">
+ select a.order_hour as time, ifnull(b.num, 0) as num
+ from (
+ SELECT 0 AS order_hour UNION ALL SELECT 1 AS order_hour UNION ALL
+ SELECT 2 AS order_hour UNION ALL SELECT 3 AS order_hour UNION ALL
+ SELECT 4 AS order_hour UNION ALL SELECT 5 AS order_hour UNION ALL
+ SELECT 6 AS order_hour UNION ALL SELECT 7 AS order_hour UNION ALL
+ SELECT 8 AS order_hour UNION ALL SELECT 9 AS order_hour UNION ALL
+ SELECT 10 AS order_hour UNION ALL SELECT 11 AS order_hour UNION ALL
+ SELECT 12 AS order_hour UNION ALL SELECT 13 AS order_hour UNION ALL
+ SELECT 14 AS order_hour UNION ALL SELECT 15 AS order_hour UNION ALL
+ SELECT 16 AS order_hour UNION ALL SELECT 17 AS order_hour UNION ALL
+ SELECT 18 AS order_hour UNION ALL SELECT 19 AS order_hour UNION ALL
+ SELECT 20 AS order_hour UNION ALL SELECT 21 AS order_hour UNION ALL
+ SELECT 22 AS order_hour UNION ALL SELECT 23 AS order_hour
+ ) as a
+ LEFT JOIN
+ (
+ SELECT HOUR(recovery.time) AS order_hour, SUM(weight) AS num from sys_recovery recovery
+ left join sys_land sl on sl.id = recovery.land_id
+ WHERE recovery.time >= str_to_date(concat(#{year},' 00:00:00'),'%Y-%m-%d %T')
+ AND recovery.time <= str_to_date(concat(#{year},' 23:59:59'),'%Y-%m-%d %T')
+ and sl.farm_id = #{farmId}
+ GROUP BY order_hour
+ ) b ON a.order_hour=b.order_hour
+ ORDER BY a.order_hour
</select>
<!--农产品监管-->
<select id="productsSupervise" resultType="java.util.HashMap">
@@ -115,15 +354,14 @@
IFNULL( SUM( CASE WHEN LEAVES = 2 THEN weight END ), 0 ) AS '2',
IFNULL( SUM( CASE WHEN LEAVES = 3 THEN weight END ), 0 ) AS '3',
IFNULL( SUM( CASE WHEN LEAVES = 4 THEN weight END ), 0 ) AS '4'
- FROM
- sys_recovery
- WHERE
- 1 = 1
+ FROM sys_recovery sr
+ left join sys_land sl on sr.land_id = sl.id
+ WHERE 1 = 1
<if test="year!=null and year!=''">
- and YEAR ( time ) = #{year}
+ and sr.time like concat('%',#{year},'%')
</if>
- <if test="deptId!=null and deptId!=''">
- and dept_id = #{deptId}
+ <if test="farmId!=null and farmId!=''">
+ and sl.farm_id = #{farmId}
</if>
</select>
<!--大屏经营概况年产量统计-->
@@ -149,9 +387,10 @@
<!--小程序农产品库存详情数据-->
<select id="statisticsProductx" resultType="org.springblade.modules.farmplant.vo.FarmProductStockVO">
- select sfps.strain_id strainId,sfps.weight,ss.url,ss.strain_name strainName from
+ select sfps.strain_id strainId,SUM(sfps.weight) AS weight,ss.url,ss.strain_name strainName from
sys_farm_product_stock sfps
left join sys_strain ss on ss.id = sfps.strain_id
+ LEFT JOIN sys_land land ON land.id = sfps.land_id
where 1=1
<if test="farmProductStock.strainId!=null and farmProductStock.strainId!=''">
and sfps.strain_id = #{farmProductStock.strainId}
@@ -171,6 +410,13 @@
<if test="farmProductStock.tenantId!=null and farmProductStock.tenantId!=''">
and sfps.tenant_id = #{farmProductStock.tenantId}
</if>
+ <if test="farmProductStock.strainType !=null and farmProductStock.strainType !='' ">
+ and ss.strain_type = #{farmProductStock.strainType}
+ </if>
+ <if test="farmProductStock.farmId !=null and farmProductStock.farmId !='' ">
+ and land.farm_id = #{farmProductStock.farmId}
+ </if>
+ GROUP BY sfps.strain_id
</select>
<!--销售对比库存是否充足-->
@@ -178,18 +424,25 @@
SELECT
CASE
WHEN
- weight > #{sale} THEN
+ weight >= #{sale} THEN
TRUE ELSE FALSE
END result
FROM
sys_farm_product_stock
WHERE
- strain_id = #{id}
+ id = #{id}
</select>
+
<!--减去对应库存-->
<update id="stockReduce">
UPDATE sys_farm_product_stock SET weight = weight - #{sale}
WHERE
- strain_id = #{id}
+ id = #{id}
</update>
+
+ <select id="selectBy2Id" resultType="org.springblade.modules.farmplant.entity.FarmProductStock">
+ SELECT id,strain_id,weight,leaves,time,operator,remark,
+ create_time,farm_plant_id,dept_id,tenant_id,recovery,land_id
+ FROM sys_farm_product_stock WHERE strain_id = #{strainId} AND land_id = #{landId}
+ </select>
</mapper>
--
Gitblit v1.9.3