Browse Source

12.添加查获信息展示接口

sunpanhu 4 weeks ago
parent
commit
3caeaa97fd

+ 16 - 0
airport-admin/src/main/java/com/sundot/airport/web/controller/ledger/LedgerSeizureStatsController.java

@@ -13,6 +13,7 @@ import com.sundot.airport.ledger.domain.LedgerSeizureStats;
13 13
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
14 14
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
15 15
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
16
+import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
16 17
 import com.sundot.airport.ledger.service.ILedgerSeizureStatsService;
17 18
 import org.springframework.beans.factory.annotation.Autowired;
18 19
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -80,4 +81,19 @@ public class LedgerSeizureStatsController extends BaseController {
80 81
         List<CountSeizureSingleQuantityResVO> seizureQuantityList = service.countSeizureSingleQuantity(countQueryReq);
81 82
         return AjaxResult.success(seizureQuantityList);
82 83
     }
84
+
85
+    /**
86
+     * 功能描述:查获信息展示
87
+     *
88
+     * @param countQueryReq 查询参数
89
+     * @return AjaxResult
90
+     * @method countSeizureInfoItem
91
+     * @author PanHu Sun
92
+     * @date 2026/5/20 13:32
93
+     */
94
+    @PostMapping("/countSeizureInfoItem")
95
+    public AjaxResult countSeizureInfoItem(@RequestBody CountQueryReqVO countQueryReq) {
96
+        SeizeTotalAndItemVO seizeTotalAndItem = service.getTimeRangeStats(countQueryReq);
97
+        return AjaxResult.success(seizeTotalAndItem);
98
+    }
83 99
 }

+ 3 - 2
airport-ledger/src/main/java/com/sundot/airport/ledger/domain/vo/CountQueryReqVO.java

@@ -3,6 +3,7 @@ package com.sundot.airport.ledger.domain.vo;
3 3
 import lombok.Data;
4 4
 
5 5
 import java.io.Serializable;
6
+import java.util.Date;
6 7
 
7 8
 /**
8 9
  * 功能描述:统计查询 Req Entity
@@ -30,10 +31,10 @@ public class CountQueryReqVO implements Serializable {
30 31
     /**
31 32
      * 开始时间
32 33
      */
33
-    private String startDate;
34
+    private Date startDate;
34 35
 
35 36
     /**
36 37
      * 结束时间
37 38
      */
38
-    private String endDate;
39
+    private Date endDate;
39 40
 }

+ 23 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/domain/vo/SeizeItemVO.java

@@ -0,0 +1,23 @@
1
+package com.sundot.airport.ledger.domain.vo;
2
+
3
+import lombok.Data;
4
+
5
+import java.io.Serializable;
6
+
7
+/**
8
+ * 功能描述:查获信息展示 - 列表
9
+ *
10
+ * @author PanHu Sun
11
+ * @date 2026/5/20 13:35
12
+ */
13
+@Data
14
+public class SeizeItemVO implements Serializable {
15
+    /**
16
+     * 维度名称:员工/小组/班组/部门
17
+     */
18
+    private String name;
19
+    /**
20
+     * 查获数量
21
+     */
22
+    private Integer seizeNum;
23
+}

+ 24 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/domain/vo/SeizeTotalAndItemVO.java

@@ -0,0 +1,24 @@
1
+package com.sundot.airport.ledger.domain.vo;
2
+
3
+import lombok.Data;
4
+
5
+import java.io.Serializable;
6
+import java.util.List;
7
+
8
+/**
9
+ * 功能描述:查获信息展示-总数和项目信息
10
+ *
11
+ * @author PanHu Sun
12
+ * @date 2026/5/20 13:36
13
+ */
14
+@Data
15
+public class SeizeTotalAndItemVO implements Serializable {
16
+    /**
17
+     * 总查获数(左侧大数字)
18
+     */
19
+    private Integer totalSeizeNum;
20
+    /**
21
+     * 柱状图明细列表(右侧)
22
+     */
23
+    private List<SeizeItemVO> itemList;
24
+}

+ 23 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/mapper/LedgerSeizureStatsMapper.java

@@ -6,6 +6,7 @@ import com.sundot.airport.ledger.domain.LedgerSeizureStats;
6 6
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
7 7
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
8 8
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
9
+import com.sundot.airport.ledger.domain.vo.SeizeItemVO;
9 10
 import org.apache.ibatis.annotations.Param;
10 11
 
11 12
 /**
@@ -39,4 +40,26 @@ public interface LedgerSeizureStatsMapper extends BaseMapper<LedgerSeizureStats>
39 40
      * @date 2026/5/20 11:09
40 41
      */
41 42
     List<CountSeizureSingleQuantityResVO> countSeizureSingleQuantity(CountQueryReqVO query);
43
+
44
+    /**
45
+     * 功能描述:查获信息展示-列表信息
46
+     *
47
+     * @param query 查询参数
48
+     * @return List<SeizeItemVO>
49
+     * @method statsTimeRangeItem
50
+     * @author PanHu Sun
51
+     * @date 2026/5/20 13:39
52
+     */
53
+    List<SeizeItemVO> statsTimeRangeItem(CountQueryReqVO query);
54
+
55
+    /**
56
+     * 功能描述:查获信息展示-总数
57
+     *
58
+     * @param query 查询参数
59
+     * @return Integer
60
+     * @method statsTimeRangeTotal
61
+     * @author PanHu Sun
62
+     * @date 2026/5/20 13:39
63
+     */
64
+    Integer statsTimeRangeTotal(CountQueryReqVO query);
42 65
 }

+ 12 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/service/ILedgerSeizureStatsService.java

@@ -6,6 +6,7 @@ import com.sundot.airport.ledger.domain.LedgerSeizureStats;
6 6
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
7 7
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
8 8
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
9
+import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
9 10
 
10 11
 public interface ILedgerSeizureStatsService extends IService<LedgerSeizureStats> {
11 12
     List<LedgerSeizureStats> selectList(LedgerSeizureStats query);
@@ -32,4 +33,15 @@ public interface ILedgerSeizureStatsService extends IService<LedgerSeizureStats>
32 33
      * @date 2026/5/20 10:43
33 34
      */
34 35
     List<CountSeizureSingleQuantityResVO> countSeizureSingleQuantity(CountQueryReqVO countQueryReq);
36
+
37
+    /**
38
+     * 功能描述:查获信息展示
39
+     *
40
+     * @param countQueryReq 查询参数
41
+     * @return SeizeTotalAndItemVO
42
+     * @method getTimeRangeStats
43
+     * @author PanHu Sun
44
+     * @date 2026/5/20 13:43
45
+     */
46
+    SeizeTotalAndItemVO getTimeRangeStats(CountQueryReqVO countQueryReq);
35 47
 }

+ 23 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/service/impl/LedgerSeizureStatsServiceImpl.java

@@ -9,6 +9,8 @@ import com.sundot.airport.ledger.domain.LedgerSeizureStats;
9 9
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
10 10
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
11 11
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
12
+import com.sundot.airport.ledger.domain.vo.SeizeItemVO;
13
+import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
12 14
 import com.sundot.airport.ledger.mapper.LedgerSeizureStatsMapper;
13 15
 import com.sundot.airport.ledger.service.ILedgerSeizureStatsService;
14 16
 import org.springframework.beans.factory.annotation.Autowired;
@@ -66,4 +68,25 @@ public class LedgerSeizureStatsServiceImpl extends ServiceImpl<LedgerSeizureStat
66 68
         List<CountSeizureSingleQuantityResVO> seizureQuantityResList = this.baseMapper.countSeizureSingleQuantity(countQueryReq);
67 69
         return CollUtil.emptyIfNull(seizureQuantityResList);
68 70
     }
71
+
72
+    /**
73
+     * 功能描述:查获信息展示
74
+     *
75
+     * @param countQueryReq 查询参数
76
+     * @return SeizeTotalAndItemVO
77
+     * @method getTimeRangeStats
78
+     * @author PanHu Sun
79
+     * @date 2026/5/20 13:43
80
+     */
81
+    @Override
82
+    public SeizeTotalAndItemVO getTimeRangeStats(CountQueryReqVO countQueryReq) {
83
+        SeizeTotalAndItemVO result = new SeizeTotalAndItemVO();
84
+        // 总查获数
85
+        Integer total = this.baseMapper.statsTimeRangeTotal(countQueryReq);
86
+        result.setTotalSeizeNum(total);
87
+        // 柱状明细
88
+        List<SeizeItemVO> itemList = this.baseMapper.statsTimeRangeItem(countQueryReq);
89
+        result.setItemList(itemList);
90
+        return result;
91
+    }
69 92
 }

+ 38 - 0
airport-ledger/src/main/resources/mapper/ledger/LedgerSeizureStatsMapper.xml

@@ -148,5 +148,43 @@
148 148
             </choose>
149 149
         ORDER BY record_date ASC
150 150
     </select>
151
+    <!-- 明细查询:动态下钻维度 -->
152
+    <select id="statsTimeRangeItem" parameterType="com.sundot.airport.ledger.domain.vo.CountQueryReqVO" resultType="com.sundot.airport.ledger.domain.vo.SeizeItemVO">
153
+        SELECT
154
+            <choose>
155
+                <when test="groupId != null">inspector_name AS name</when>
156
+                <when test="teamId != null">group_name AS name</when>
157
+                <when test="deptId != null">team_name AS name</when>
158
+                <otherwise>dept_name AS name</otherwise>
159
+            </choose>,
160
+            IFNULL(SUM(item_quantity), 0) AS seizeNum
161
+        FROM ledger_seizure_stats
162
+        WHERE
163
+            del_flag = '0'
164
+            AND record_date BETWEEN #{startDate} AND #{endDate}
165
+            <if test="deptId != null">AND dept_id = #{deptId}</if>
166
+            <if test="teamId != null">AND team_id = #{teamId}</if>
167
+            <if test="groupId != null">AND group_id = #{groupId}</if>
168
+        GROUP BY
169
+            <choose>
170
+                <when test="groupId != null">inspector_id</when>
171
+                <when test="teamId != null">group_id</when>
172
+                <when test="deptId != null">team_id</when>
173
+                <otherwise>dept_id</otherwise>
174
+            </choose>
175
+        ORDER BY seizeNum DESC
176
+    </select>
177
+
178
+    <!-- 总查获数查询 -->
179
+    <select id="statsTimeRangeTotal" parameterType="com.sundot.airport.ledger.domain.vo.CountQueryReqVO">
180
+        SELECT IFNULL(SUM(item_quantity), 0)
181
+        FROM ledger_seizure_stats
182
+        WHERE
183
+            del_flag = '0'
184
+            AND record_date BETWEEN #{startDate} AND #{endDate}
185
+            <if test="deptId != null">AND dept_id = #{deptId}</if>
186
+            <if test="teamId != null">AND team_id = #{teamId}</if>
187
+            <if test="groupId != null">AND group_id = #{groupId}</if>
188
+    </select>
151 189
 
152 190
 </mapper>