Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

chenshudong 4 settimane fa
parent
commit
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 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.SeizeCategoryQuantityVO;
16 17
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
18
+import com.sundot.airport.ledger.domain.vo.SeizureAreaVO;
17 19
 import com.sundot.airport.ledger.service.ILedgerSeizureStatsService;
18 20
 import org.springframework.beans.factory.annotation.Autowired;
19 21
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -96,4 +98,34 @@ public class LedgerSeizureStatsController extends BaseController {
96 98
         SeizeTotalAndItemVO seizeTotalAndItem = service.getTimeRangeStats(countQueryReq);
97 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 1
 package com.sundot.airport.ledger.mapper;
2 2
 
3 3
 import java.util.List;
4
+
4 5
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 6
 import com.sundot.airport.ledger.domain.LedgerSeizureStats;
6 7
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
7 8
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
8 9
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
9 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 13
 import org.apache.ibatis.annotations.Param;
11 14
 
12 15
 /**
@@ -16,8 +19,8 @@ public interface LedgerSeizureStatsMapper extends BaseMapper<LedgerSeizureStats>
16 19
     List<LedgerSeizureStats> selectList(LedgerSeizureStats query);
17 20
 
18 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 26
      * 功能描述:近30天查获数量(总表)
@@ -62,4 +65,26 @@ public interface LedgerSeizureStatsMapper extends BaseMapper<LedgerSeizureStats>
62 65
      * @date 2026/5/20 13:39
63 66
      */
64 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 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.SeizeCategoryQuantityVO;
9 10
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
11
+import com.sundot.airport.ledger.domain.vo.SeizureAreaVO;
10 12
 
11 13
 public interface ILedgerSeizureStatsService extends IService<LedgerSeizureStats> {
12 14
     List<LedgerSeizureStats> selectList(LedgerSeizureStats query);
@@ -44,4 +46,26 @@ public interface ILedgerSeizureStatsService extends IService<LedgerSeizureStats>
44 46
      * @date 2026/5/20 13:43
45 47
      */
46 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 1
 package com.sundot.airport.ledger.service.impl;
2 2
 
3
+import java.util.Collections;
3 4
 import java.util.List;
4 5
 
5 6
 import cn.hutool.core.collection.CollUtil;
@@ -9,8 +10,10 @@ import com.sundot.airport.ledger.domain.LedgerSeizureStats;
9 10
 import com.sundot.airport.ledger.domain.vo.CountQueryReqVO;
10 11
 import com.sundot.airport.ledger.domain.vo.CountSeizureSingleQuantityResVO;
11 12
 import com.sundot.airport.ledger.domain.vo.CountSeizureTotalQuantityResVO;
13
+import com.sundot.airport.ledger.domain.vo.SeizeCategoryQuantityVO;
12 14
 import com.sundot.airport.ledger.domain.vo.SeizeItemVO;
13 15
 import com.sundot.airport.ledger.domain.vo.SeizeTotalAndItemVO;
16
+import com.sundot.airport.ledger.domain.vo.SeizureAreaVO;
14 17
 import com.sundot.airport.ledger.mapper.LedgerSeizureStatsMapper;
15 18
 import com.sundot.airport.ledger.service.ILedgerSeizureStatsService;
16 19
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,4 +92,36 @@ public class LedgerSeizureStatsServiceImpl extends ServiceImpl<LedgerSeizureStat
89 92
         result.setItemList(itemList);
90 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 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 180
         SELECT IFNULL(SUM(item_quantity), 0)
181 181
         FROM ledger_seizure_stats
182 182
         WHERE
@@ -187,4 +187,36 @@
187 187
             <if test="groupId != null">AND group_id = #{groupId}</if>
188 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 222
 </mapper>