zhouhui.jiang

update

...@@ -244,13 +244,15 @@ public class RebateController { ...@@ -244,13 +244,15 @@ public class RebateController {
244 244
245 @Operation(summary = "获取返利月度统计数据") 245 @Operation(summary = "获取返利月度统计数据")
246 @GetMapping("/monthlyStats") 246 @GetMapping("/monthlyStats")
247 - public ApiRes<List<Map<String, Object>>> getRebateMonthlyStats(@RequestParam(required = false) Integer year) { 247 + public ApiRes<List<Map<String, Object>>> getRebateMonthlyStats(
248 - log.info("获取返利月度统计数据,年份:{}", year); 248 + @RequestParam(required = false) Integer year,
249 + @RequestParam(required = false) String dealerName) {
250 + log.info("获取返利月度统计数据,年份:{},经销商名称:{}", year, dealerName);
249 try { 251 try {
250 if (year == null) { 252 if (year == null) {
251 year = java.time.LocalDate.now().getYear(); 253 year = java.time.LocalDate.now().getYear();
252 } 254 }
253 - List<Map<String, Object>> result = rebateService.getRebateMonthlyStats(year); 255 + List<Map<String, Object>> result = rebateService.getRebateMonthlyStats(year, dealerName);
254 return ApiRes.success(result); 256 return ApiRes.success(result);
255 } catch (Exception e) { 257 } catch (Exception e) {
256 log.error("获取返利月度统计数据失败", e); 258 log.error("获取返利月度统计数据失败", e);
...@@ -260,10 +262,11 @@ public class RebateController { ...@@ -260,10 +262,11 @@ public class RebateController {
260 262
261 @Operation(summary = "获取返利状态统计数据") 263 @Operation(summary = "获取返利状态统计数据")
262 @GetMapping("/statusStats") 264 @GetMapping("/statusStats")
263 - public ApiRes<Map<String, Object>> getRebateStatusStats() { 265 + public ApiRes<Map<String, Object>> getRebateStatusStats(
264 - log.info("获取返利状态统计数据"); 266 + @RequestParam(required = false) String dealerName) {
267 + log.info("获取返利状态统计数据,经销商名称:{}", dealerName);
265 try { 268 try {
266 - Map<String, Object> result = rebateService.getRebateStatusStats(); 269 + Map<String, Object> result = rebateService.getRebateStatusStats(dealerName);
267 return ApiRes.success(result); 270 return ApiRes.success(result);
268 } catch (Exception e) { 271 } catch (Exception e) {
269 log.error("获取返利状态统计数据失败", e); 272 log.error("获取返利状态统计数据失败", e);
......
...@@ -82,16 +82,18 @@ public interface RebateMapper extends BaseMapper<Rebate> { ...@@ -82,16 +82,18 @@ public interface RebateMapper extends BaseMapper<Rebate> {
82 * 获取返利月度统计数据 82 * 获取返利月度统计数据
83 * 83 *
84 * @param year 年份 84 * @param year 年份
85 + * @param dealerName 经销商名称(可选)
85 * @return 月度统计数据 86 * @return 月度统计数据
86 */ 87 */
87 - List<Map<String, Object>> getRebateMonthlyStats(@Param("year") Integer year); 88 + List<Map<String, Object>> getRebateMonthlyStats(@Param("year") Integer year, @Param("dealerName") String dealerName);
88 89
89 /** 90 /**
90 * 获取返利状态统计数据 91 * 获取返利状态统计数据
91 * 92 *
93 + * @param dealerName 经销商名称(可选)
92 * @return 状态统计数据 94 * @return 状态统计数据
93 */ 95 */
94 - Map<String, Object> getRebateStatusStats(); 96 + Map<String, Object> getRebateStatusStats(@Param("dealerName") String dealerName);
95 97
96 /** 98 /**
97 * 获取返利趋势统计数据 99 * 获取返利趋势统计数据
......
...@@ -120,16 +120,18 @@ public interface RebateService extends IService<Rebate> { ...@@ -120,16 +120,18 @@ public interface RebateService extends IService<Rebate> {
120 * 获取返利月度统计数据 120 * 获取返利月度统计数据
121 * 121 *
122 * @param year 年份 122 * @param year 年份
123 + * @param dealerName 经销商名称(可选)
123 * @return 月度统计数据 124 * @return 月度统计数据
124 */ 125 */
125 - List<Map<String, Object>> getRebateMonthlyStats(Integer year); 126 + List<Map<String, Object>> getRebateMonthlyStats(Integer year, String dealerName);
126 127
127 /** 128 /**
128 * 获取返利状态统计数据 129 * 获取返利状态统计数据
129 * 130 *
131 + * @param dealerName 经销商名称(可选)
130 * @return 状态统计数据 132 * @return 状态统计数据
131 */ 133 */
132 - Map<String, Object> getRebateStatusStats(); 134 + Map<String, Object> getRebateStatusStats(String dealerName);
133 135
134 /** 136 /**
135 * 获取返利趋势统计数据 137 * 获取返利趋势统计数据
......
...@@ -259,15 +259,15 @@ public class RebateServiceImpl extends ServiceImpl<RebateMapper, Rebate> impleme ...@@ -259,15 +259,15 @@ public class RebateServiceImpl extends ServiceImpl<RebateMapper, Rebate> impleme
259 } 259 }
260 260
261 @Override 261 @Override
262 - public List<Map<String, Object>> getRebateMonthlyStats(Integer year) { 262 + public List<Map<String, Object>> getRebateMonthlyStats(Integer year, String dealerName) {
263 - log.info("获取返利月度统计数据,年份:{}", year); 263 + log.info("获取返利月度统计数据,年份:{},经销商名称:{}", year, dealerName);
264 - return rebateMapper.getRebateMonthlyStats(year); 264 + return rebateMapper.getRebateMonthlyStats(year, dealerName);
265 } 265 }
266 266
267 @Override 267 @Override
268 - public Map<String, Object> getRebateStatusStats() { 268 + public Map<String, Object> getRebateStatusStats(String dealerName) {
269 - log.info("获取返利状态统计数据"); 269 + log.info("获取返利状态统计数据,经销商名称:{}", dealerName);
270 - return rebateMapper.getRebateStatusStats(); 270 + return rebateMapper.getRebateStatusStats(dealerName);
271 } 271 }
272 272
273 @Override 273 @Override
......
...@@ -108,32 +108,50 @@ ...@@ -108,32 +108,50 @@
108 <!-- 获取返利月度统计数据 --> 108 <!-- 获取返利月度统计数据 -->
109 <select id="getRebateMonthlyStats" resultType="java.util.Map"> 109 <select id="getRebateMonthlyStats" resultType="java.util.Map">
110 SELECT 110 SELECT
111 - MONTH(rebate_date) as month, 111 + MONTH(rd.rebate_date) as month,
112 - COALESCE(SUM(CASE WHEN operate_type = 1 THEN rebate_amount ELSE -rebate_amount END), 0) as totalAmount, 112 + COALESCE(SUM(CASE WHEN rd.calc_flag = 1 AND rd.operate_type = 1 THEN rd.rebate_amount
113 - COALESCE(SUM(CASE WHEN calc_flag = 1 AND operate_type = 1 THEN rebate_amount 113 + ELSE 0 END), 0) as totalAmount,
114 - WHEN calc_flag = 1 AND operate_type = 2 THEN -rebate_amount 114 + ABS(COALESCE(SUM(CASE WHEN rd.calc_flag = 1 AND rd.operate_type = 2 THEN rd.rebate_amount
115 - ELSE 0 END), 0) as calculatedAmount, 115 + ELSE 0 END), 0)) as calculatedAmount,
116 COUNT(*) as totalCount, 116 COUNT(*) as totalCount,
117 - COUNT(CASE WHEN calc_flag = 1 THEN 1 END) as calculatedCount 117 + COUNT(CASE WHEN rd.calc_flag = 1 THEN 1 END) as calculatedCount
118 - FROM t_rebate_detail 118 + FROM t_rebate_detail rd
119 - WHERE del_flag = '0' 119 + WHERE rd.del_flag = '0'
120 - AND YEAR(rebate_date) = #{year} 120 + AND YEAR(rd.rebate_date) = #{year}
121 - GROUP BY MONTH(rebate_date) 121 + <if test="dealerName != null and dealerName != ''">
122 + AND rd.dealer_name LIKE CONCAT('%', #{dealerName}, '%')
123 + </if>
124 + GROUP BY MONTH(rd.rebate_date)
122 ORDER BY month 125 ORDER BY month
123 </select> 126 </select>
124 127
125 <!-- 获取返利状态统计数据 --> 128 <!-- 获取返利状态统计数据 -->
126 <select id="getRebateStatusStats" resultType="java.util.Map"> 129 <select id="getRebateStatusStats" resultType="java.util.Map">
127 SELECT 130 SELECT
128 - COUNT(CASE WHEN calc_flag = 1 THEN 1 END) as calculatedCount, 131 + (SELECT COUNT(CASE WHEN calc_flag = 1 THEN 1 END) FROM t_rebate_detail WHERE del_flag = '0') as calculatedCount,
129 - COUNT(CASE WHEN calc_flag = 0 THEN 1 END) as unCalculatedCount, 132 + (SELECT COUNT(CASE WHEN calc_flag = 0 THEN 1 END) FROM t_rebate_detail WHERE del_flag = '0') as unCalculatedCount,
130 - COUNT(*) as totalCount, 133 + (SELECT COUNT(*) FROM t_rebate_detail WHERE del_flag = '0') as totalCount,
131 - COALESCE(SUM(CASE WHEN calc_flag = 1 AND operate_type = 1 THEN rebate_amount 134 + (SELECT COALESCE(SUM(used_rebate_amount), 0)
132 - WHEN calc_flag = 1 AND operate_type = 2 THEN -rebate_amount 135 + FROM t_dealer_info
133 - ELSE 0 END), 0) as calculatedAmount,
134 - COALESCE(SUM(CASE WHEN operate_type = 1 THEN rebate_amount ELSE -rebate_amount END), 0) as totalAmount
135 - FROM t_rebate_detail
136 WHERE del_flag = '0' 136 WHERE del_flag = '0'
137 + <if test="dealerName != null and dealerName != ''">
138 + AND dealer_name LIKE CONCAT('%', #{dealerName}, '%')
139 + </if>
140 + ) as calculatedAmount,
141 + (SELECT COALESCE(SUM(total_rebate_amount), 0)
142 + FROM t_dealer_info
143 + WHERE del_flag = '0'
144 + <if test="dealerName != null and dealerName != ''">
145 + AND dealer_name LIKE CONCAT('%', #{dealerName}, '%')
146 + </if>
147 + ) as totalAmount,
148 + (SELECT COALESCE(SUM(pending_rebate_amount), 0)
149 + FROM t_dealer_info
150 + WHERE del_flag = '0'
151 + <if test="dealerName != null and dealerName != ''">
152 + AND dealer_name LIKE CONCAT('%', #{dealerName}, '%')
153 + </if>
154 + ) as unCalculatedAmount
137 </select> 155 </select>
138 156
139 <!-- 获取返利趋势统计数据 --> 157 <!-- 获取返利趋势统计数据 -->
......
...@@ -201,19 +201,23 @@ export const exportRebate = (params: RebateSearchParams) => { ...@@ -201,19 +201,23 @@ export const exportRebate = (params: RebateSearchParams) => {
201 } 201 }
202 202
203 // 获取返利月度统计数据 203 // 获取返利月度统计数据
204 -export const getRebateMonthlyStats = (year?: number) => { 204 +export const getRebateMonthlyStats = (year?: number, dealerName?: string) => {
205 return request({ 205 return request({
206 url: '/api/rebate/monthlyStats', 206 url: '/api/rebate/monthlyStats',
207 method: 'get', 207 method: 'get',
208 - params: { year: year || new Date().getFullYear() } 208 + params: {
209 + year: year || new Date().getFullYear(),
210 + dealerName: dealerName || undefined
211 + }
209 }) 212 })
210 } 213 }
211 214
212 // 获取返利状态统计数据 215 // 获取返利状态统计数据
213 -export const getRebateStatusStats = () => { 216 +export const getRebateStatusStats = (dealerName?: string) => {
214 return request({ 217 return request({
215 url: '/api/rebate/statusStats', 218 url: '/api/rebate/statusStats',
216 - method: 'get' 219 + method: 'get',
220 + params: { dealerName: dealerName || undefined }
217 }) 221 })
218 } 222 }
219 223
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
74 <div class="chart-legend"> 74 <div class="chart-legend">
75 <div class="legend-item"> 75 <div class="legend-item">
76 <span class="legend-dot" style="background-color: #4CAF50;"></span> 76 <span class="legend-dot" style="background-color: #4CAF50;"></span>
77 - <span>返利合计</span> 77 + <span>新增返利</span>
78 </div> 78 </div>
79 <div class="legend-item"> 79 <div class="legend-item">
80 <span class="legend-dot" style="background-color: #2196F3;"></span> 80 <span class="legend-dot" style="background-color: #2196F3;"></span>
...@@ -779,6 +779,11 @@ const handleDateRangeChange = (dates: [string, string] | null) => { ...@@ -779,6 +779,11 @@ const handleDateRangeChange = (dates: [string, string] | null) => {
779 const handleSearch = () => { 779 const handleSearch = () => {
780 pagination.pageNum = 1 780 pagination.pageNum = 1
781 getRebateList() 781 getRebateList()
782 + // 刷新图表数据
783 + setTimeout(async () => {
784 + await initTrendChart()
785 + await initPieChart()
786 + }, 100)
782 } 787 }
783 788
784 // 重置 789 // 重置
...@@ -799,6 +804,11 @@ const handleReset = () => { ...@@ -799,6 +804,11 @@ const handleReset = () => {
799 }) 804 })
800 pagination.pageNum = 1 805 pagination.pageNum = 1
801 getRebateList() 806 getRebateList()
807 + // 刷新图表数据
808 + setTimeout(async () => {
809 + await initTrendChart()
810 + await initPieChart()
811 + }, 100)
802 } 812 }
803 813
804 // 刷新 814 // 刷新
...@@ -1290,8 +1300,8 @@ const initTrendChart = async () => { ...@@ -1290,8 +1300,8 @@ const initTrendChart = async () => {
1290 const chart = echarts.init(trendChart.value) 1300 const chart = echarts.init(trendChart.value)
1291 1301
1292 try { 1302 try {
1293 - // 调用后端API获取月度统计数据 - 查询2025年的数据 1303 + // 调用后端API获取月度统计数据 - 查询2025年的数据,传入经销商名称
1294 - const response = await rebateApi.getRebateMonthlyStats(2025) 1304 + const response = await rebateApi.getRebateMonthlyStats(2025, searchForm.dealerName || undefined)
1295 console.log('月度统计API响应:', response) 1305 console.log('月度统计API响应:', response)
1296 let monthlyData: any[] = [] 1306 let monthlyData: any[] = []
1297 1307
...@@ -1363,7 +1373,7 @@ const initTrendChart = async () => { ...@@ -1363,7 +1373,7 @@ const initTrendChart = async () => {
1363 }, 1373 },
1364 series: [ 1374 series: [
1365 { 1375 {
1366 - name: '返利合计', 1376 + name: '新增返利',
1367 type: 'line', 1377 type: 'line',
1368 smooth: true, 1378 smooth: true,
1369 data: totalRebateData, 1379 data: totalRebateData,
...@@ -1455,7 +1465,7 @@ const initTrendChart = async () => { ...@@ -1455,7 +1465,7 @@ const initTrendChart = async () => {
1455 }, 1465 },
1456 series: [ 1466 series: [
1457 { 1467 {
1458 - name: '返利合计', 1468 + name: '新增返利',
1459 type: 'line', 1469 type: 'line',
1460 smooth: true, 1470 smooth: true,
1461 data: totalRebateDataFallback, 1471 data: totalRebateDataFallback,
...@@ -1498,8 +1508,8 @@ const initPieChart = async () => { ...@@ -1498,8 +1508,8 @@ const initPieChart = async () => {
1498 const chart = echarts.init(pieChart.value) 1508 const chart = echarts.init(pieChart.value)
1499 1509
1500 try { 1510 try {
1501 - // 调用后端API获取状态统计数据 1511 + // 调用后端API获取状态统计数据,传入经销商名称
1502 - const response = await rebateApi.getRebateStatusStats() 1512 + const response = await rebateApi.getRebateStatusStats(searchForm.dealerName || undefined)
1503 console.log('状态统计API响应:', response) 1513 console.log('状态统计API响应:', response)
1504 let statusData: any = { calculatedAmount: 0, unCalculatedAmount: 0 } 1514 let statusData: any = { calculatedAmount: 0, unCalculatedAmount: 0 }
1505 1515
......
1 { 1 {
2 - "token": "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwic3ViIjoiYWRtaW4iLCJpYXQiOjE3NjE1NTY0MTksImV4cCI6MTc2MTY0MjgxOX0.seWCAYzvRAMwpf3jld21oKC8rD8TzcB3h3rTJI8veBtlE9UjipUYadO38tgOPDI3K1l7v50Lu-k5CqOe0hxhKQ", 2 + "token": "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwic3ViIjoiYWRtaW4iLCJpYXQiOjE3NjI5NDE3MzMsImV4cCI6MTc2MzAyODEzM30.eAK5goLY7IXBB5Zpe3Ep2kD-YN820koE4E0mB6WGdVik6BadxAEQk4bUSFDK9oTzA6SF_anwRFICgF7YSNS51A",
3 - "saved_at": 1761556419 3 + "saved_at": 1762941734
4 } 4 }
...\ No newline at end of file ...\ No newline at end of file
......