From e9f1ee7341bcf55904f6c0d31aa91ff52aa441dc Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期二, 22 九月 2026 11:28:40 +0800
Subject: [PATCH] feat(数据查看): 按市州汇总(任意起止月/自动上年同期/时点列不参与/排名可选) + 导出 Excel,新增 CityRollupService 与 3 个接口

---
 traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java b/traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java
index f769ca6..6ce7914 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java
@@ -24,6 +24,8 @@
 import com.trafficaudit.dataimport.entity.WycTotalMonthly;
 import com.trafficaudit.common.util.RegionUtil;
 import com.trafficaudit.reportexport.calc.WycSplitCalc;
+import com.trafficaudit.dataimport.service.CityRollupService;
+import javax.servlet.http.HttpServletResponse;
 import com.trafficaudit.dataimport.mapper.FreightTurnoverImportMapper;
 import com.trafficaudit.dataimport.mapper.H2032EnterpriseMonthlyMapper;
 import com.trafficaudit.dataimport.mapper.PassengerAuthVehicleMapper;
@@ -100,6 +102,8 @@
     private WycTotalMonthlyMapper wycTotalMapper;
     @Resource
     private WycSplitCalc wycSplitCalc;
+    @Resource
+    private CityRollupService cityRollupService;
 
     @GetMapping("/list")
     public Result<Map<String, Object>> list(@RequestParam("type") String type,
@@ -451,6 +455,39 @@
         return rows;
     }
 
+    /** 鏀寔鎸夊競宸炴眹鎬荤殑鏁版嵁绫诲瀷 */
+    @GetMapping("/rollupTypes")
+    public Result<List<Map<String, Object>>> rollupTypes() {
+        return Result.ok(cityRollupService.supportedTypes());
+    }
+
+    /** 鎸夊競宸炴眹鎬伙紙浠绘剰璧锋鏈堬級 */
+    @GetMapping("/summary")
+    public Result<Map<String, Object>> summary(@RequestParam("type") String type,
+                                               @RequestParam("from") String from,
+                                               @RequestParam("to") String to,
+                                               @RequestParam(value = "rankMode", defaultValue = "blank") String rankMode) {
+        return Result.ok(cityRollupService.summary(type, from, to, "recompute".equalsIgnoreCase(rankMode)));
+    }
+
+    /** 鎸夊競宸炴眹鎬诲鍑� Excel锛堟暟鍊煎叏绮惧害锛屾樉绀� 2 浣嶅皬鏁� / 鐧惧垎姣旓級 */
+    @GetMapping("/export")
+    public void export(@RequestParam("type") String type,
+                       @RequestParam("from") String from,
+                       @RequestParam("to") String to,
+                       @RequestParam(value = "rankMode", defaultValue = "blank") String rankMode,
+                       HttpServletResponse response) throws Exception {
+        byte[] bytes = cityRollupService.exportExcel(type, from, to, "recompute".equalsIgnoreCase(rankMode));
+        String fileName = "鎸夊競宸炴眹鎬籣" + type + "_" + from + "_" + to + ".xlsx";
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("UTF-8");
+        response.setHeader("Content-Disposition",
+                "attachment; filename=\"" + java.net.URLEncoder.encode(fileName, "UTF-8") + "\"");
+        response.setContentLength(bytes.length);
+        response.getOutputStream().write(bytes);
+        response.getOutputStream().flush();
+    }
+
     private boolean notEmpty(String s) {
         return s != null && !s.trim().isEmpty();
     }

--
Gitblit v1.9.1