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/process/mapper/ProcessMapper.xml | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 208 insertions(+), 8 deletions(-)
diff --git a/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml b/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
index d6c8197..3090eb0 100644
--- a/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
+++ b/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
@@ -23,23 +23,32 @@
<select id="selectProcessPage" resultMap="processResultMap">
- SELECT p.strain_id,p.id,
- p.land_id,sale_time,sale_num,strain_name,process_id,
- SUM(p.process_num) as process_num,
+ SELECT DISTINCT p.id,
+ p.strain_id,
+ p.land_id,
+ p.sale_time,
+ p.sale_num,
+ strain_name,p.process_id,
+ p.parent_id,
+ p.process_num as process_num,
m.machining_type AS processName,
- m.machining_tp AS tpurl
+ m.machining_tp AS tpurl,
+ a.machining_type AS parentName
FROM sys_process p
LEFT JOIN sys_machining m ON m.id = p.process_id
LEFT JOIN sys_land sl ON sl.id = p.land_id
LEFT JOIN sys_strain strain ON p.strain_id = strain.id
+ LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
+ LEFT JOIN (SELECT mm.id,mm.machining_type FROM sys_machining mm) a ON a.id = p.parent_id
WHERE p.is_deleted = 0
<if test="process.farmId!=null and process.farmId!=''">
- and sl.farm_id = #{process.farmId}
+ AND (sl.farm_id = #{process.farmId} or (inv.fps_id = #{process.farmId} AND p.land_id IS NULL))
</if>
- <if test="process.strainId !=null and process.strainId !=''">
- and p.strain_id = #{process.strainId}
+ <if test="process.kind !=null and process.kind !=''">
+ and (p.strain_id = #{process.kind} OR p.parent_id = #{process.kind})
</if>
- GROUP BY p.strain_id,m.machining_type,m.machining_tp,p.land_id,sale_time,sale_num,process_id,p.id ORDER BY p.create_time DESC
+ GROUP BY p.id
+ ORDER BY p.create_time DESC
</select>
<select id="stockCompare" resultType="boolean">
@@ -60,4 +69,195 @@
WHERE
id = #{proid}
</update>
+
+ <select id="statistics" resultType="java.lang.Double">
+ SELECT SUM(a.process_num)as sum FROM
+ (
+ SELECT DISTINCT p.process_num
+ FROM sys_process p
+ LEFT JOIN sys_land land ON land.id = p.land_id
+ LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
+ WHERE 1=1 AND p.is_deleted = 0
+ <if test="year!=null and year!=''">
+ and YEAR ( p.sale_time ) = #{year}
+ </if>
+ <if test="farmId!=null and farmId!=''">
+ and (land.farm_id = #{farmId} or (inv.fps_id = #{farmId} AND p.land_id IS NULL))
+ </if>
+ ) a
+ </select>
+ <select id="statisticsMonth" resultType="java.util.Map">
+ SELECT
+ DAY(lefttable.date) time,
+ IFNULL( righttable.m, '0' ) AS num
+ FROM
+ (
+ 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( middle.process_num ), 0 ) AS m,
+ middle.gptime
+ FROM
+ (
+ SELECT DISTINCT
+ process.process_num,
+ DATE_FORMAT( process.sale_time, '%Y-%c-%d' ) AS gptime
+ FROM
+ sys_process process
+ left join sys_land sl on sl.id = process.land_id
+ LEFT JOIN sys_process_inv inv ON inv.product_id = process.process_id
+ WHERE
+ DATE_FORMAT( process.sale_time, '%Y-%m' ) = #{year}
+ and (sl.farm_id = #{farmId} OR ( inv.fps_id = #{farmId} AND process.land_id IS NULL ))
+ )middle GROUP BY middle.gptime
+ ) AS righttable ON DATE_FORMAT( lefttable.date, '%Y-%c-%d' ) = righttable.gptime
+ ORDER BY time
+
+ </select>
+
+ <select id="statisticsYear" resultType="java.util.Map">
+ 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 middle.a,SUM(middle.process_num) b FROM
+ (
+ select DISTINCT
+ month(p.sale_time) a,
+ p.process_num
+ from sys_process p
+ left join sys_land sl on sl.id = p.land_id
+ LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
+ where
+ year(p.sale_time) = #{year}
+ and (sl.farm_id = #{farmId} OR ( inv.fps_id = #{farmId} AND p.land_id IS NULL ))
+ ) middle GROUP BY middle.a
+ ) n
+ on m.id = n.a
+ order by id
+ </select>
+
+ <select id="statisticsDay" resultType="java.util.Map">
+ 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 middle.order_hour,SUM(middle.process_num) num FROM
+ (
+ SELECT DISTINCT
+ HOUR(process.sale_time) AS order_hour,
+ process.process_num
+ from sys_process process
+ left join sys_land sl on sl.id = process.land_id
+ LEFT JOIN sys_process_inv inv ON inv.product_id = process.process_id
+ WHERE
+ process.sale_time >= str_to_date(concat(#{year},' 00:00:00'),'%Y-%m-%d %T')
+ AND process.sale_time <= str_to_date(concat(#{year},' 23:59:59'),'%Y-%m-%d %T')
+ and (sl.farm_id = #{farmId} OR ( inv.fps_id = #{farmId} AND process.land_id IS NULL ))
+ ) middle GROUP BY middle.order_hour
+ ) b ON a.order_hour=b.order_hour
+ ORDER BY a.order_hour
+ </select>
</mapper>
--
Gitblit v1.9.3