Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

chenshudong 4 hafta önce
ebeveyn
işleme
79cd37b49f

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

@@ -13,7 +13,9 @@ import com.sundot.airport.ledger.domain.LedgerSeizureStats;
13
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
13
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
14
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
14
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
15
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
15
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
16
+import com.sundot.airport.ledger.domain.vo.SeizeCategoryQuantityVO;
16
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
17
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
18
+import com.sundot.airport.ledger.domain.vo.SeizureAreaVO;
17
 import com.sundot.airport.ledger.service.ILedgerSeizureStatsService;
19
 import com.sundot.airport.ledger.service.ILedgerSeizureStatsService;
18
 import org.springframework.beans.factory.annotation.Autowired;
20
 import org.springframework.beans.factory.annotation.Autowired;
19
 import org.springframework.security.access.prepost.PreAuthorize;
21
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -96,4 +98,34 @@ public class LedgerSeizureStatsController extends BaseController {
96
         SeizeTotalAndItemVO seizeTotalAndItem = service.getTimeRangeStats(countQueryReq);
98
         SeizeTotalAndItemVO seizeTotalAndItem = service.getTimeRangeStats(countQueryReq);
97
         return AjaxResult.success(seizeTotalAndItem);
99
         return AjaxResult.success(seizeTotalAndItem);
98
     }
100
     }
101
+
102
+    /**
103
+     * 功能描述:查获物品分布
104
+     *
105
+     * @param countQueryReq 查询参数
106
+     * @return AjaxResult
107
+     * @method countSeizureInfoItem
108
+     * @author PanHu Sun
109
+     * @date 2026/5/20 13:32
110
+     */
111
+    @PostMapping("/countSeizeSubjectCategoryQuantity")
112
+    public AjaxResult countSeizeSubjectCategoryQuantity(@RequestBody CountQueryReqVO countQueryReq) {
113
+        List<SeizeCategoryQuantityVO> seizeCategoryQuantityList = service.countSeizeSubjectCategoryQuantity(countQueryReq);
114
+        return AjaxResult.success(seizeCategoryQuantityList);
115
+    }
116
+
117
+    /**
118
+     * 功能描述:查获工作区域分布
119
+     *
120
+     * @param countQueryReq 查询参数
121
+     * @return AjaxResult
122
+     * @method countSeizureInfoItem
123
+     * @author PanHu Sun
124
+     * @date 2026/5/20 13:32
125
+     */
126
+    @PostMapping("/countSeizeAreaQuantity")
127
+    public AjaxResult countSeizeAreaQuantity(@RequestBody CountQueryReqVO countQueryReq) {
128
+        List<SeizureAreaVO> seizureAreaList = service.countSeizeAreaQuantity(countQueryReq);
129
+        return AjaxResult.success(seizureAreaList);
130
+    }
99
 }
131
 }

+ 23 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/domain/vo/SeizeCategoryQuantityVO.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
+ * 功能描述:查获物品分布 Res Entity
9
+ *
10
+ * @author PanHu Sun
11
+ * @date 2026/5/20 14:39
12
+ */
13
+@Data
14
+public class SeizeCategoryQuantityVO implements Serializable {
15
+    /**
16
+     * 违规品类别名称(饼图名称)
17
+     */
18
+    private String itemName;
19
+    /**
20
+     * 该类别总查获数量(饼图数值)
21
+     */
22
+    private Integer itemNum;
23
+}

+ 27 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/domain/vo/SeizureAreaVO.java

@@ -0,0 +1,27 @@
1
+package com.sundot.airport.ledger.domain.vo;
2
+
3
+import lombok.Data;
4
+
5
+import java.io.Serializable;
6
+
7
+/**
8
+ * 功能描述:查获巩固走区域分布Res Entity
9
+ *
10
+ * @author PanHu Sun
11
+ * @date 2026/5/20 15:08
12
+ */
13
+@Data
14
+public class SeizureAreaVO implements Serializable {
15
+    /**
16
+     * 工作区域id(X轴)
17
+     */
18
+    private String areaId;
19
+    /**
20
+     * 工作区域名称(X轴)
21
+     */
22
+    private String workArea;
23
+    /**
24
+     * 该区域查获数量(Y轴)
25
+     */
26
+    private Integer areaSeizeNum;
27
+}

+ 27 - 2
airport-ledger/src/main/java/com/sundot/airport/ledger/mapper/LedgerSeizureStatsMapper.java

@@ -1,12 +1,15 @@
1
 package com.sundot.airport.ledger.mapper;
1
 package com.sundot.airport.ledger.mapper;
2
 
2
 
3
 import java.util.List;
3
 import java.util.List;
4
+
4
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5
 import com.sundot.airport.ledger.domain.LedgerSeizureStats;
6
 import com.sundot.airport.ledger.domain.LedgerSeizureStats;
6
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
7
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
7
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
8
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
8
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
9
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
9
 import com.sundot.airport.ledger.domain.vo.SeizeItemVO;
10
 import com.sundot.airport.ledger.domain.vo.SeizeItemVO;
11
+import com.sundot.airport.ledger.domain.vo.SeizeCategoryQuantityVO;
12
+import com.sundot.airport.ledger.domain.vo.SeizureAreaVO;
10
 import org.apache.ibatis.annotations.Param;
13
 import org.apache.ibatis.annotations.Param;
11
 
14
 
12
 /**
15
 /**
@@ -16,8 +19,8 @@ public interface LedgerSeizureStatsMapper extends BaseMapper<LedgerSeizureStats>
16
     List<LedgerSeizureStats> selectList(LedgerSeizureStats query);
19
     List<LedgerSeizureStats> selectList(LedgerSeizureStats query);
17
 
20
 
18
     int countByInspectorAndDateRange(@Param("inspectorName") String inspectorName,
21
     int countByInspectorAndDateRange(@Param("inspectorName") String inspectorName,
19
-                                     @Param("beginTime")     String beginTime,
20
-                                     @Param("endTime")       String endTime);
22
+                                     @Param("beginTime") String beginTime,
23
+                                     @Param("endTime") String endTime);
21
 
24
 
22
     /**
25
     /**
23
      * 功能描述:近30天查获数量(总表)
26
      * 功能描述:近30天查获数量(总表)
@@ -62,4 +65,26 @@ public interface LedgerSeizureStatsMapper extends BaseMapper<LedgerSeizureStats>
62
      * @date 2026/5/20 13:39
65
      * @date 2026/5/20 13:39
63
      */
66
      */
64
     Integer statsTimeRangeTotal(CountQueryReqVO query);
67
     Integer statsTimeRangeTotal(CountQueryReqVO query);
68
+
69
+    /**
70
+     * 功能描述:查询时间范围内各违规品类别查获数量
71
+     *
72
+     * @param query 查询参数
73
+     * @return List<SeizeCategoryQuantityVO>
74
+     * @method countSeizeSubjectCategoryQuantity
75
+     * @author PanHu Sun
76
+     * @date 2026/5/20 14:40
77
+     */
78
+    List<SeizeCategoryQuantityVO> countSeizeSubjectCategoryQuantity(CountQueryReqVO query);
79
+
80
+    /**
81
+     * 功能描述:查获工作区域分布
82
+     *
83
+     * @param query 查询参数
84
+     * @return List<SeizureAreaVO>
85
+     * @method countSeizeAreaQuantity
86
+     * @author PanHu Sun
87
+     * @date 2026/5/20 15:10
88
+     */
89
+    List<SeizureAreaVO> countSeizeAreaQuantity(CountQueryReqVO query);
65
 }
90
 }

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

@@ -6,7 +6,9 @@ import com.sundot.airport.ledger.domain.LedgerSeizureStats;
6
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
6
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
7
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
7
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
8
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
8
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
9
+import com.sundot.airport.ledger.domain.vo.SeizeCategoryQuantityVO;
9
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
10
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
11
+import com.sundot.airport.ledger.domain.vo.SeizureAreaVO;
10
 
12
 
11
 public interface ILedgerSeizureStatsService extends IService<LedgerSeizureStats> {
13
 public interface ILedgerSeizureStatsService extends IService<LedgerSeizureStats> {
12
     List<LedgerSeizureStats> selectList(LedgerSeizureStats query);
14
     List<LedgerSeizureStats> selectList(LedgerSeizureStats query);
@@ -44,4 +46,26 @@ public interface ILedgerSeizureStatsService extends IService<LedgerSeizureStats>
44
      * @date 2026/5/20 13:43
46
      * @date 2026/5/20 13:43
45
      */
47
      */
46
     SeizeTotalAndItemVO getTimeRangeStats(CountQueryReqVO countQueryReq);
48
     SeizeTotalAndItemVO getTimeRangeStats(CountQueryReqVO countQueryReq);
49
+
50
+    /**
51
+     * 功能描述:查获物品分布
52
+     *
53
+     * @param countQueryReq 查询参数
54
+     * @return List<SeizeCategoryQuantityVO>
55
+     * @method countSeizeSubjectCategoryQuantity
56
+     * @author PanHu Sun
57
+     * @date 2026/5/20 14:46
58
+     */
59
+    List<SeizeCategoryQuantityVO> countSeizeSubjectCategoryQuantity(CountQueryReqVO countQueryReq);
60
+
61
+    /**
62
+     * 功能描述:查获工作区域分布
63
+     *
64
+     * @param countQueryReq 查询参数
65
+     * @return List<SeizureAreaVO>
66
+     * @method countSeizeAreaQuantity
67
+     * @author PanHu Sun
68
+     * @date 2026/5/20 15:12
69
+     */
70
+    List<SeizureAreaVO> countSeizeAreaQuantity(CountQueryReqVO countQueryReq);
47
 }
71
 }

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

@@ -1,5 +1,6 @@
1
 package com.sundot.airport.ledger.service.impl;
1
 package com.sundot.airport.ledger.service.impl;
2
 
2
 
3
+import java.util.Collections;
3
 import java.util.List;
4
 import java.util.List;
4
 
5
 
5
 import cn.hutool.core.collection.CollUtil;
6
 import cn.hutool.core.collection.CollUtil;
@@ -9,8 +10,10 @@ import com.sundot.airport.ledger.domain.LedgerSeizureStats;
9
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
10
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
10
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
11
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
11
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
12
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
13
+import com.sundot.airport.ledger.domain.vo.SeizeCategoryQuantityVO;
12
 import com.sundot.airport.ledger.domain.vo.SeizeItemVO;
14
 import com.sundot.airport.ledger.domain.vo.SeizeItemVO;
13
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
15
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
16
+import com.sundot.airport.ledger.domain.vo.SeizureAreaVO;
14
 import com.sundot.airport.ledger.mapper.LedgerSeizureStatsMapper;
17
 import com.sundot.airport.ledger.mapper.LedgerSeizureStatsMapper;
15
 import com.sundot.airport.ledger.service.ILedgerSeizureStatsService;
18
 import com.sundot.airport.ledger.service.ILedgerSeizureStatsService;
16
 import org.springframework.beans.factory.annotation.Autowired;
19
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,4 +92,36 @@ public class LedgerSeizureStatsServiceImpl extends ServiceImpl<LedgerSeizureStat
89
         result.setItemList(itemList);
92
         result.setItemList(itemList);
90
         return result;
93
         return result;
91
     }
94
     }
95
+
96
+    /**
97
+     * 功能描述:查获物品分布
98
+     *
99
+     * @param countQueryReq 查询参数
100
+     * @return List<SeizeCategoryQuantityVO>
101
+     * @method countSeizeSubjectCategoryQuantity
102
+     * @author PanHu Sun
103
+     * @date 2026/5/20 14:46
104
+     */
105
+    @Override
106
+    public List<SeizeCategoryQuantityVO> countSeizeSubjectCategoryQuantity(CountQueryReqVO countQueryReq) {
107
+        // 无数据自动返回空数组,符合需求
108
+        List<SeizeCategoryQuantityVO> seizeCategoryQuantityList = this.baseMapper.countSeizeSubjectCategoryQuantity(countQueryReq);
109
+        return CollUtil.emptyIfNull(seizeCategoryQuantityList);
110
+    }
111
+
112
+    /**
113
+     * 功能描述:查获工作区域分布
114
+     *
115
+     * @param countQueryReq 查询参数
116
+     * @return List<SeizureAreaVO>
117
+     * @method countSeizeAreaQuantity
118
+     * @author PanHu Sun
119
+     * @date 2026/5/20 15:12
120
+     */
121
+    @Override
122
+    public List<SeizureAreaVO> countSeizeAreaQuantity(CountQueryReqVO countQueryReq) {
123
+        // 无数据自动返回空数组,符合需求
124
+        List<SeizureAreaVO> seizureAreaList = this.baseMapper.countSeizeAreaQuantity(countQueryReq);
125
+        return CollUtil.emptyIfNull(seizureAreaList);
126
+    }
92
 }
127
 }

+ 33 - 1
airport-ledger/src/main/resources/mapper/ledger/LedgerSeizureStatsMapper.xml

@@ -176,7 +176,7 @@
176
     </select>
176
     </select>
177
 
177
 
178
     <!-- 总查获数查询 -->
178
     <!-- 总查获数查询 -->
179
-    <select id="statsTimeRangeTotal" parameterType="com.sundot.airport.ledger.domain.vo.CountQueryReqVO">
179
+    <select id="statsTimeRangeTotal" parameterType="com.sundot.airport.ledger.domain.vo.CountQueryReqVO" resultType="java.lang.Integer">
180
         SELECT IFNULL(SUM(item_quantity), 0)
180
         SELECT IFNULL(SUM(item_quantity), 0)
181
         FROM ledger_seizure_stats
181
         FROM ledger_seizure_stats
182
         WHERE
182
         WHERE
@@ -187,4 +187,36 @@
187
             <if test="groupId != null">AND group_id = #{groupId}</if>
187
             <if test="groupId != null">AND group_id = #{groupId}</if>
188
     </select>
188
     </select>
189
 
189
 
190
+    <select id="countSeizeSubjectCategoryQuantity" parameterType="com.sundot.airport.ledger.domain.vo.CountQueryReqVO" resultType="com.sundot.airport.ledger.domain.vo.SeizeCategoryQuantityVO">
191
+        SELECT item_name AS itemName, IFNULL(SUM(item_quantity), 0) AS itemNum
192
+        FROM ledger_seizure_stats
193
+        WHERE
194
+            del_flag = '0'
195
+            AND record_date BETWEEN #{startDate} AND #{endDate}
196
+            <!-- 三级联动筛选 -->
197
+            <if test="deptId != null">AND dept_id = #{deptId}</if>
198
+            <if test="teamId != null">AND team_id = #{teamId}</if>
199
+            <if test="groupId != null">AND group_id = #{groupId}</if>
200
+            <!-- 过滤空类别,避免脏数据 -->
201
+            AND item_name IS NOT NULL
202
+            AND item_name != ''
203
+        GROUP BY item_name
204
+        ORDER BY categoryNum DESC
205
+    </select>
206
+
207
+    <select id="countSeizeAreaQuantity" parameterType="com.sundot.airport.ledger.domain.vo.CountQueryReqVO" resultType="com.sundot.airport.ledger.domain.vo.SeizureAreaVO">
208
+        SELECT area_id AS areaId, work_area AS workArea, IFNULL(SUM(item_quantity), 0) AS areaSeizeNum
209
+        FROM ledger_seizure_stats
210
+        WHERE
211
+            del_flag = '0'
212
+            AND record_date BETWEEN #{startDate} AND #{endDate}
213
+            <!-- 三级联动筛选 -->
214
+            <if test="deptId != null">AND dept_id = #{deptId}</if>
215
+            <if test="teamId != null">AND team_id = #{teamId}</if>
216
+            <if test="groupId != null">AND group_id = #{groupId}</if>
217
+            <!-- 过滤空区域脏数据 -->
218
+            AND work_area IS NOT NULL AND work_area != ''
219
+        GROUP BY area_id, work_area
220
+        ORDER BY areaSeizeNum DESC
221
+    </select>
190
 </mapper>
222
 </mapper>