From 596a15d10884a1af78b5a2e9cc591cce1694d492 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 11 Jul 2022 17:51:49 +0800
Subject: [PATCH] 新增溯源查询统计

---
 src/main/java/org/springblade/modules/traceability/controller/SweepRecordController.java    |   10 ++
 src/main/java/org/springblade/modules/traceability/service/impl/SweepRecordServiceImpl.java |   22 ++++
 src/main/java/org/springblade/modules/traceability/dto/SweepRecordStatisticDTO.java         |   22 ++++
 src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.java            |   22 ++++
 src/main/java/org/springblade/modules/traceability/vo/SweepRecordVO.java                    |    6 +
 src/main/java/org/springblade/modules/traceability/service/SweepRecordService.java          |    7 +
 src/main/java/org/springblade/modules/task/mapper/TaskMapper.java                           |    1 
 src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.xml             |  156 +++++++++++++++++++++++++++++++
 8 files changed, 246 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/modules/task/mapper/TaskMapper.java b/src/main/java/org/springblade/modules/task/mapper/TaskMapper.java
index d8210de..2cff998 100644
--- a/src/main/java/org/springblade/modules/task/mapper/TaskMapper.java
+++ b/src/main/java/org/springblade/modules/task/mapper/TaskMapper.java
@@ -42,5 +42,6 @@
 	List<TaskVO> selectTaskPage(IPage page, TaskVO task);
 
 	int selectCount(String taskuser);
+
 	List<Map<Object,String>> countTaskNum(String year);
 }
diff --git a/src/main/java/org/springblade/modules/traceability/controller/SweepRecordController.java b/src/main/java/org/springblade/modules/traceability/controller/SweepRecordController.java
index 7d78861..48be1d4 100644
--- a/src/main/java/org/springblade/modules/traceability/controller/SweepRecordController.java
+++ b/src/main/java/org/springblade/modules/traceability/controller/SweepRecordController.java
@@ -118,4 +118,14 @@
 		return R.data(sweepRecordService.getSweepRecordStatistics(sweepRecord));
 	}
 
+	/**
+	 * 获取扫描次数统计数据(日,月,年统计)
+	 * @param sweepRecord
+	 * @return
+	 */
+	@GetMapping("/getSweepRecordStatisticsByDayOrMonthOrYear")
+	public R getSweepRecordStatisticsByDayOrMonthOrYear(SweepRecordVO sweepRecord){
+		return R.data(sweepRecordService.getSweepRecordStatisticsByDayOrMonthOrYear(sweepRecord));
+	}
+
 }
diff --git a/src/main/java/org/springblade/modules/traceability/dto/SweepRecordStatisticDTO.java b/src/main/java/org/springblade/modules/traceability/dto/SweepRecordStatisticDTO.java
new file mode 100644
index 0000000..3aac182
--- /dev/null
+++ b/src/main/java/org/springblade/modules/traceability/dto/SweepRecordStatisticDTO.java
@@ -0,0 +1,22 @@
+package org.springblade.modules.traceability.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author zhongrj
+ */
+@Data
+public class SweepRecordStatisticDTO implements Serializable {
+	/**
+	 * 日期
+	 */
+	private String time;
+
+	/**
+	 * 数量
+	 */
+	private Integer num;
+
+}
diff --git a/src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.java b/src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.java
index 143838a..99f7cdc 100644
--- a/src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.java
+++ b/src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.modules.traceability.dto.SweepRecordDTO;
+import org.springblade.modules.traceability.dto.SweepRecordStatisticDTO;
 import org.springblade.modules.traceability.entity.SweepRecord;
 import org.springblade.modules.traceability.vo.SweepRecordVO;
 
@@ -31,4 +32,25 @@
 	 * @return
 	 */
 	List<Integer> getSweepRecordStatistics(@Param("sweepRecord") SweepRecordVO sweepRecord);
+
+	/**
+	 * 获取扫描次数统计数据(年统计)
+	 * @param sweepRecord
+	 * @return
+	 */
+	List<SweepRecordStatisticDTO> getSweepRecordStatisticsByYear(@Param("sweepRecord") SweepRecordVO sweepRecord);
+
+	/**
+	 * 获取扫描次数统计数据(月统计)
+	 * @param sweepRecord
+	 * @return
+	 */
+	List<SweepRecordStatisticDTO> getSweepRecordStatisticsByMonth(@Param("sweepRecord") SweepRecordVO sweepRecord);
+
+	/**
+	 * 获取扫描次数统计数据(日统计)
+	 * @param sweepRecord
+	 * @return
+	 */
+	List<SweepRecordStatisticDTO> getSweepRecordStatisticsByDay(@Param("sweepRecord") SweepRecordVO sweepRecord);
 }
diff --git a/src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.xml b/src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.xml
index 058a0f4..8c89416 100644
--- a/src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.xml
+++ b/src/main/java/org/springblade/modules/traceability/mapper/SweepRecordMapper.xml
@@ -46,4 +46,160 @@
         WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( ssr.create_time, '%Y%m' ) ) =1
         and sl.farm_id = #{sweepRecord.farmId}
     </select>
+
+
+    <!--获取扫描次数统计数据(日统计)-->
+    <select id="getSweepRecordStatisticsByDay" resultType="org.springblade.modules.traceability.dto.SweepRecordStatisticDTO">
+        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(ssr.create_time) AS order_hour, count(*) AS num from sys_sweep_record ssr
+        left join sys_traceability st on ssr.code = st.id
+        left join sys_recovery sr on sr.id = st.recovery_id
+        left join sys_land sl on sl.id = sr.land_id
+        WHERE ssr.create_time >= str_to_date(concat(#{sweepRecord.time},' 00:00:00'),'%Y-%m-%d %T')
+        AND ssr.create_time&lt;= str_to_date(concat(#{sweepRecord.time},' 23:59:59'),'%Y-%m-%d %T')
+        and sl.farm_id = #{sweepRecord.farmId}
+        GROUP BY order_hour
+        ) b ON a.order_hour=b.order_hour
+        ORDER BY a.order_hour
+    </select>
+
+    <!--获取扫描次数统计数据(月统计)-->
+    <select id="getSweepRecordStatisticsByMonth" resultType="org.springblade.modules.traceability.dto.SweepRecordStatisticDTO">
+        SELECT 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( #{sweepRecord.time}, '-01' ) AS FIRST, DAY ( LAST_DAY( str_to_date( concat(#{sweepRecord.time},'-01'), '%Y-%m-%d' ) ) ) AS
+        last ) y
+        WHERE
+        x.d &lt;= y.last
+        AND ADDDATE( y.FIRST
+        , x.d - 1 ) &lt;= CURDATE()
+        ) AS lefttable
+        LEFT JOIN (
+        SELECT
+		IFNULL( COUNT( * ), 0 ) AS m,
+		DATE_FORMAT( ssr.create_time, '%Y-%c-%d' ) AS gptime
+	FROM
+		sys_sweep_record ssr left join sys_traceability st on ssr.code = st.id
+        left join sys_recovery sr on sr.id = st.recovery_id
+        left join sys_land sl on sl.id = sr.land_id
+	WHERE
+		DATE_FORMAT( ssr.create_time, '%Y-%m' ) = #{sweepRecord.time}
+		and sl.farm_id = #{sweepRecord.farmId}
+        GROUP BY gptime
+        ) AS righttable ON DATE_FORMAT(lefttable.date, '%Y-%c-%d') = righttable.gptime
+    </select>
+
+    <!--获取扫描次数统计数据(年统计)-->
+    <select id="getSweepRecordStatisticsByYear" resultType="org.springblade.modules.traceability.dto.SweepRecordStatisticDTO">
+        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.create_time) a,count(*) b from sys_sweep_record ssr
+            left join sys_traceability st on ssr.code = st.id
+            left join sys_recovery sr on sr.id = st.recovery_id
+            left join sys_land sl on sl.id = sr.land_id
+            where  year(ssr.create_time) = #{sweepRecord.farmId}
+            and sl.farm_id = #{sweepRecord.farmId}
+            GROUP BY month(ssr.create_time)
+        ) n
+        on m.id = n.a
+        order by id
+    </select>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/traceability/service/SweepRecordService.java b/src/main/java/org/springblade/modules/traceability/service/SweepRecordService.java
index 2a6282f..c1f1c78 100644
--- a/src/main/java/org/springblade/modules/traceability/service/SweepRecordService.java
+++ b/src/main/java/org/springblade/modules/traceability/service/SweepRecordService.java
@@ -29,4 +29,11 @@
 	 * @return
 	 */
 	SweepRecordDTO getSweepRecordStatistics(SweepRecordVO sweepRecord);
+
+	/**
+	 * 获取扫描次数统计数据(日,月,年统计)
+	 * @param sweepRecord
+	 * @return
+	 */
+	Object getSweepRecordStatisticsByDayOrMonthOrYear(SweepRecordVO sweepRecord);
 }
diff --git a/src/main/java/org/springblade/modules/traceability/service/impl/SweepRecordServiceImpl.java b/src/main/java/org/springblade/modules/traceability/service/impl/SweepRecordServiceImpl.java
index fabe867..05bb5f4 100644
--- a/src/main/java/org/springblade/modules/traceability/service/impl/SweepRecordServiceImpl.java
+++ b/src/main/java/org/springblade/modules/traceability/service/impl/SweepRecordServiceImpl.java
@@ -49,4 +49,26 @@
 		//返回
 		return dto;
 	}
+
+	/**
+	 * 获取扫描次数统计数据(日,月,年统计)
+	 * @param sweepRecord
+	 * @return
+	 */
+	@Override
+	public Object getSweepRecordStatisticsByDayOrMonthOrYear(SweepRecordVO sweepRecord) {
+		//按年统计
+		if (sweepRecord.getTime().length()==4){
+			return baseMapper.getSweepRecordStatisticsByYear(sweepRecord);
+		}
+		//按月统计
+		if (sweepRecord.getTime().length()==7){
+			return baseMapper.getSweepRecordStatisticsByMonth(sweepRecord);
+		}
+		//按日统计
+		if (sweepRecord.getTime().length()==10){
+			return baseMapper.getSweepRecordStatisticsByDay(sweepRecord);
+		}
+		return null;
+	}
 }
diff --git a/src/main/java/org/springblade/modules/traceability/vo/SweepRecordVO.java b/src/main/java/org/springblade/modules/traceability/vo/SweepRecordVO.java
index 6343945..b98db43 100644
--- a/src/main/java/org/springblade/modules/traceability/vo/SweepRecordVO.java
+++ b/src/main/java/org/springblade/modules/traceability/vo/SweepRecordVO.java
@@ -18,4 +18,10 @@
 	 */
 	private String farmId;
 
+
+	/**
+	 * 时间
+	 */
+	private String time;
+
 }

--
Gitblit v1.9.3