From 2d74b99f1cb1ba745e32f5cfdfed82a8fb22f37f Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期二, 22 九月 2026 09:49:41 +0800
Subject: [PATCH] feat(数据查看): 补齐网约车总数/网约车订单/个体客运三类查看(含市州派生)+ 测试报告与日结

---
 traffic-audit-server/src/main/java/com/trafficaudit/dataimport/controller/DataViewController.java |  242 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 242 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 fea9403..79aba3a 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
@@ -14,6 +14,15 @@
 import com.trafficaudit.dataimport.entity.ScaleSplitTransport;
 import com.trafficaudit.dataimport.entity.TransportAuthVehicle;
 import com.trafficaudit.dataimport.entity.VehicleTrackMileage;
+import com.trafficaudit.dataimport.entity.InvestmentMonthly;
+import com.trafficaudit.dataimport.entity.InvestmentProject;
+import com.trafficaudit.dataimport.entity.InvestmentSystem;
+import com.trafficaudit.dataimport.entity.EnergyVehicleQuarterly;
+import com.trafficaudit.dataimport.entity.EnergyAuthVehicle;
+import com.trafficaudit.dataimport.entity.PassengerIndividualMonthly;
+import com.trafficaudit.dataimport.entity.WycOrderMonthly;
+import com.trafficaudit.dataimport.entity.WycTotalMonthly;
+import com.trafficaudit.common.util.RegionUtil;
 import com.trafficaudit.dataimport.mapper.FreightTurnoverImportMapper;
 import com.trafficaudit.dataimport.mapper.H2032EnterpriseMonthlyMapper;
 import com.trafficaudit.dataimport.mapper.PassengerAuthVehicleMapper;
@@ -24,6 +33,14 @@
 import com.trafficaudit.dataimport.mapper.ScaleSplitTransportMapper;
 import com.trafficaudit.dataimport.mapper.TransportAuthVehicleMapper;
 import com.trafficaudit.dataimport.mapper.VehicleTrackMileageMapper;
+import com.trafficaudit.dataimport.mapper.InvestmentMonthlyMapper;
+import com.trafficaudit.dataimport.mapper.InvestmentProjectMapper;
+import com.trafficaudit.dataimport.mapper.InvestmentSystemMapper;
+import com.trafficaudit.dataimport.mapper.EnergyVehicleQuarterlyMapper;
+import com.trafficaudit.dataimport.mapper.EnergyAuthVehicleMapper;
+import com.trafficaudit.dataimport.mapper.PassengerIndividualMonthlyMapper;
+import com.trafficaudit.dataimport.mapper.WycOrderMonthlyMapper;
+import com.trafficaudit.dataimport.mapper.WycTotalMonthlyMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -64,6 +81,22 @@
     private CityTaxiMonthlyMapper cityTaxiMapper;
     @Resource
     private CityTaxiAuthMapper cityTaxiAuthMapper;
+    @Resource
+    private InvestmentMonthlyMapper investmentMonthlyMapper;
+    @Resource
+    private InvestmentProjectMapper investmentProjectMapper;
+    @Resource
+    private InvestmentSystemMapper investmentSystemMapper;
+    @Resource
+    private EnergyVehicleQuarterlyMapper energyVehicleMapper;
+    @Resource
+    private EnergyAuthVehicleMapper energyAuthMapper;
+    @Resource
+    private PassengerIndividualMonthlyMapper passengerIndividualMapper;
+    @Resource
+    private WycOrderMonthlyMapper wycOrderMapper;
+    @Resource
+    private WycTotalMonthlyMapper wycTotalMapper;
 
     @GetMapping("/list")
     public Result<Map<String, Object>> list(@RequestParam("type") String type,
@@ -199,6 +232,113 @@
                 fillPage(result, r);
                 break;
             }
+            case "investmentMonthly": {
+                java.util.List<Long> pids = new ArrayList<>();
+                if (!kw.isEmpty()) {
+                    for (InvestmentProject ip : investmentProjectMapper.selectList(
+                            new LambdaQueryWrapper<InvestmentProject>().like(InvestmentProject::getProjectName, kw))) {
+                        pids.add(ip.getId());
+                    }
+                    if (pids.isEmpty()) {
+                        result.put("records", new ArrayList<>());
+                        result.put("total", 0L);
+                        result.put("current", safePage);
+                        result.put("size", safeSize);
+                        break;
+                    }
+                }
+                LambdaQueryWrapper<InvestmentMonthly> w = new LambdaQueryWrapper<InvestmentMonthly>()
+                        .eq(notEmpty(period), InvestmentMonthly::getReportPeriod, period)
+                        .in(!pids.isEmpty(), InvestmentMonthly::getProjectId, pids)
+                        .orderByAsc(InvestmentMonthly::getProjectId)
+                        .orderByAsc(InvestmentMonthly::getId);
+                Page<InvestmentMonthly> p = new Page<>(safePage, safeSize);
+                Page<InvestmentMonthly> r = investmentMonthlyMapper.selectPage(p, w);
+                result.put("records", toMaps(r.getRecords(), propsOf(INVEST_MONTHLY_COLUMNS)));
+                fillPage(result, r);
+                break;
+            }
+            case "investmentProject": {
+                LambdaQueryWrapper<InvestmentProject> w = new LambdaQueryWrapper<InvestmentProject>()
+                        .like(!kw.isEmpty(), InvestmentProject::getProjectName, kw)
+                        .orderByAsc(InvestmentProject::getCity)
+                        .orderByAsc(InvestmentProject::getId);
+                Page<InvestmentProject> p = new Page<>(safePage, safeSize);
+                Page<InvestmentProject> r = investmentProjectMapper.selectPage(p, w);
+                result.put("records", toMaps(r.getRecords(), propsOf(INVEST_PROJECT_COLUMNS)));
+                fillPage(result, r);
+                break;
+            }
+            case "investmentSystem": {
+                LambdaQueryWrapper<InvestmentSystem> w = new LambdaQueryWrapper<InvestmentSystem>()
+                        .eq(notEmpty(period), InvestmentSystem::getReportPeriod, period)
+                        .like(!kw.isEmpty(), InvestmentSystem::getProjectName, kw)
+                        .orderByDesc(InvestmentSystem::getId);
+                Page<InvestmentSystem> p = new Page<>(safePage, safeSize);
+                Page<InvestmentSystem> r = investmentSystemMapper.selectPage(p, w);
+                result.put("records", toMaps(r.getRecords(), propsOf(INVEST_SYSTEM_COLUMNS)));
+                fillPage(result, r);
+                break;
+            }
+            case "energyVehicle": {
+                LambdaQueryWrapper<EnergyVehicleQuarterly> w = new LambdaQueryWrapper<EnergyVehicleQuarterly>()
+                        .eq(notEmpty(period), EnergyVehicleQuarterly::getReportPeriod, period)
+                        .like(!kw.isEmpty(), EnergyVehicleQuarterly::getEnterpriseName, kw)
+                        .orderByDesc(EnergyVehicleQuarterly::getId);
+                Page<EnergyVehicleQuarterly> p = new Page<>(safePage, safeSize);
+                Page<EnergyVehicleQuarterly> r = energyVehicleMapper.selectPage(p, w);
+                result.put("records", toMaps(r.getRecords(), propsOf(ENERGY_VEHICLE_COLUMNS)));
+                fillPage(result, r);
+                break;
+            }
+            case "energyAuth": {
+                LambdaQueryWrapper<EnergyAuthVehicle> w = new LambdaQueryWrapper<EnergyAuthVehicle>()
+                        .eq(notEmpty(period), EnergyAuthVehicle::getReportPeriod, period)
+                        .like(!kw.isEmpty(), EnergyAuthVehicle::getPlateNo, kw)
+                        .orderByDesc(EnergyAuthVehicle::getId);
+                Page<EnergyAuthVehicle> p = new Page<>(safePage, safeSize);
+                Page<EnergyAuthVehicle> r = energyAuthMapper.selectPage(p, w);
+                result.put("records", toMaps(r.getRecords(), propsOf(ENERGY_AUTH_COLUMNS)));
+                fillPage(result, r);
+                break;
+            }
+            case "passengerIndividual": {
+                LambdaQueryWrapper<PassengerIndividualMonthly> w = new LambdaQueryWrapper<PassengerIndividualMonthly>()
+                        .eq(notEmpty(period), PassengerIndividualMonthly::getReportPeriod, period)
+                        .like(!kw.isEmpty(), PassengerIndividualMonthly::getEnterpriseName, kw)
+                        .orderByDesc(PassengerIndividualMonthly::getId);
+                Page<PassengerIndividualMonthly> p = new Page<>(safePage, safeSize);
+                Page<PassengerIndividualMonthly> r = passengerIndividualMapper.selectPage(p, w);
+                List<Map<String, Object>> rows = toMaps(r.getRecords(), propsOf(PAX_INDIVIDUAL_COLUMNS));
+                for (Map<String, Object> row : rows) {
+                    Object rc = row.get("regionCode");
+                    String cityName = rc == null ? null : RegionUtil.cityByCode(String.valueOf(rc));
+                    row.put("city", cityName == null ? "" : cityName);
+                }
+                result.put("records", rows);
+                fillPage(result, r);
+                break;
+            }
+            case "wycTotal": {
+                LambdaQueryWrapper<WycTotalMonthly> w = new LambdaQueryWrapper<WycTotalMonthly>()
+                        .eq(notEmpty(period), WycTotalMonthly::getReportPeriod, period)
+                        .orderByDesc(WycTotalMonthly::getId);
+                Page<WycTotalMonthly> p = new Page<>(safePage, safeSize);
+                Page<WycTotalMonthly> r = wycTotalMapper.selectPage(p, w);
+                result.put("records", toMaps(r.getRecords(), propsOf(WYC_TOTAL_COLUMNS)));
+                fillPage(result, r);
+                break;
+            }
+            case "wycOrder": {
+                LambdaQueryWrapper<WycOrderMonthly> w = new LambdaQueryWrapper<WycOrderMonthly>()
+                        .eq(notEmpty(period), WycOrderMonthly::getReportPeriod, period)
+                        .orderByDesc(WycOrderMonthly::getId);
+                Page<WycOrderMonthly> p = new Page<>(safePage, safeSize);
+                Page<WycOrderMonthly> r = wycOrderMapper.selectPage(p, w);
+                result.put("records", toMaps(r.getRecords(), propsOf(WYC_ORDER_COLUMNS)));
+                fillPage(result, r);
+                break;
+            }
             default:
                 result.put("records", new ArrayList<>());
                 result.put("total", 0L);
@@ -251,6 +391,14 @@
             case "cityTaxi": return TAXI_COLUMNS;
             case "cityTaxiAuth": return TAXI_AUTH_COLUMNS;
             case "passengerAuth": return PAUTH_COLUMNS;
+            case "investmentMonthly": return INVEST_MONTHLY_COLUMNS;
+            case "investmentProject": return INVEST_PROJECT_COLUMNS;
+            case "investmentSystem": return INVEST_SYSTEM_COLUMNS;
+            case "energyVehicle": return ENERGY_VEHICLE_COLUMNS;
+            case "energyAuth": return ENERGY_AUTH_COLUMNS;
+            case "passengerIndividual": return PAX_INDIVIDUAL_COLUMNS;
+            case "wycTotal": return WYC_TOTAL_COLUMNS;
+            case "wycOrder": return WYC_ORDER_COLUMNS;
             default: return new ArrayList<>();
         }
     }
@@ -274,6 +422,14 @@
     private static final List<Map<String, Object>> BUS_COLUMNS = new ArrayList<>();
     private static final List<Map<String, Object>> TAXI_COLUMNS = new ArrayList<>();
     private static final List<Map<String, Object>> TAXI_AUTH_COLUMNS = new ArrayList<>();
+    private static final List<Map<String, Object>> INVEST_MONTHLY_COLUMNS = new ArrayList<>();
+    private static final List<Map<String, Object>> INVEST_PROJECT_COLUMNS = new ArrayList<>();
+    private static final List<Map<String, Object>> INVEST_SYSTEM_COLUMNS = new ArrayList<>();
+    private static final List<Map<String, Object>> ENERGY_VEHICLE_COLUMNS = new ArrayList<>();
+    private static final List<Map<String, Object>> ENERGY_AUTH_COLUMNS = new ArrayList<>();
+    private static final List<Map<String, Object>> PAX_INDIVIDUAL_COLUMNS = new ArrayList<>();
+    private static final List<Map<String, Object>> WYC_TOTAL_COLUMNS = new ArrayList<>();
+    private static final List<Map<String, Object>> WYC_ORDER_COLUMNS = new ArrayList<>();
 
     static {
         H2032_COLUMNS.add(col("reportPeriod", "鎶ヨ〃鏈�", 100));
@@ -447,5 +603,91 @@
         PAUTH_COLUMNS.add(col("enterpriseName", "浼佷笟鍚嶇О", 240));
         PAUTH_COLUMNS.add(col("vehicleCount", "杞﹁締鏁�", 100));
         PAUTH_COLUMNS.add(col("seatCount", "杞藉浣嶆暟", 100));
+        INVEST_MONTHLY_COLUMNS.add(col("reportPeriod", "鎶ヨ〃鏈�", 100));
+        INVEST_MONTHLY_COLUMNS.add(col("projectId", "椤圭洰ID", 80));
+        INVEST_MONTHLY_COLUMNS.add(col("yearPlan", "鏈勾璁″垝鎶曡祫(涓囧厓)", 140));
+        INVEST_MONTHLY_COLUMNS.add(col("yearCum", "鑷勾鍒濈疮璁″畬鎴�(涓囧厓)", 160));
+        INVEST_MONTHLY_COLUMNS.add(col("monthDone", "鏈湀瀹屾垚鎶曡祫(涓囧厓)", 150));
+        INVEST_MONTHLY_COLUMNS.add(col("startCum", "鑷紑濮嬪缓璁剧疮璁″畬鎴�(涓囧厓)", 180));
+        INVEST_MONTHLY_COLUMNS.add(col("progressStage", "寤鸿闃舵", 120));
+        INVEST_MONTHLY_COLUMNS.add(col("progressDesc", "褰㈣薄杩涘害", 320));
+        INVEST_MONTHLY_COLUMNS.add(col("buildingArea", "寤虹瓚闈㈢Н", 110));
+        INVEST_PROJECT_COLUMNS.add(col("projectName", "椤圭洰鍚嶇О", 260));
+        INVEST_PROJECT_COLUMNS.add(col("category", "绫诲埆", 100));
+        INVEST_PROJECT_COLUMNS.add(col("city", "甯傚窞", 90));
+        INVEST_PROJECT_COLUMNS.add(col("county", "鍘匡紙甯傘�佸尯锛�", 120));
+        INVEST_PROJECT_COLUMNS.add(col("builderName", "寤鸿鍗曚綅", 200));
+        INVEST_PROJECT_COLUMNS.add(col("constructNature", "寤鸿鎬ц川", 100));
+        INVEST_PROJECT_COLUMNS.add(col("startTime", "寮�宸ュ勾", 90));
+        INVEST_PROJECT_COLUMNS.add(col("endTime", "瀹屽伐骞�", 90));
+        INVEST_PROJECT_COLUMNS.add(col("totalInvestment", "鎬绘姇璧�(涓囧厓)", 130));
+        INVEST_PROJECT_COLUMNS.add(col("buildingArea", "寤虹瓚闈㈢Н", 110));
+        INVEST_PROJECT_COLUMNS.add(col("approvalGk", "宸ュ彲鎴栨牳鍑嗘壒澶嶆枃鍙�", 200));
+        INVEST_PROJECT_COLUMNS.add(col("approvalCs", "鍒濊鎴栨柦宸ュ浘鎵瑰鏂囧彿", 200));
+        INVEST_PROJECT_COLUMNS.add(col("source", "鏉ユ簮", 100));
+        INVEST_SYSTEM_COLUMNS.add(col("reportPeriod", "鎶ヨ〃鏈�", 100));
+        INVEST_SYSTEM_COLUMNS.add(col("projectName", "椤圭洰鍚嶇О", 260));
+        INVEST_SYSTEM_COLUMNS.add(col("totalInvestment", "鎬绘姇璧�(涓囧厓)", 130));
+        INVEST_SYSTEM_COLUMNS.add(col("startCum", "鑷紑濮嬪缓璁剧疮璁″畬鎴�(涓囧厓)", 180));
+        INVEST_SYSTEM_COLUMNS.add(col("yearPlan", "鏈勾璁″垝鎶曡祫(涓囧厓)", 140));
+        INVEST_SYSTEM_COLUMNS.add(col("yearCum", "鑷勾鍒濈疮璁″畬鎴�(涓囧厓)", 160));
+        INVEST_SYSTEM_COLUMNS.add(col("monthDone", "鏈湀瀹屾垚鎶曡祫(涓囧厓)", 150));
+        ENERGY_VEHICLE_COLUMNS.add(col("reportPeriod", "鎶ヨ〃鏈�", 100));
+        ENERGY_VEHICLE_COLUMNS.add(col("regionCode", "鎵�灞炲湴鍖�", 100));
+        ENERGY_VEHICLE_COLUMNS.add(col("enterpriseName", "浼佷笟鍚嶇О", 220));
+        ENERGY_VEHICLE_COLUMNS.add(col("plateNo", "杞︾墝鍙�", 110));
+        ENERGY_VEHICLE_COLUMNS.add(col("vehicleType", "杞﹁締绫诲瀷", 130));
+        ENERGY_VEHICLE_COLUMNS.add(col("fuelType", "鐕冩枡绫诲瀷", 110));
+        ENERGY_VEHICLE_COLUMNS.add(col("manufactureYear", "鍑哄巶骞翠唤", 100));
+        ENERGY_VEHICLE_COLUMNS.add(col("markedTonnage", "鏍囪鍚ㄤ綅", 100));
+        ENERGY_VEHICLE_COLUMNS.add(col("totalMileage", "鎬昏椹堕噷绋�(鍏噷)", 150));
+        ENERGY_VEHICLE_COLUMNS.add(col("loadedMileage", "閲嶈浇閲岀▼(鍏噷)", 140));
+        ENERGY_VEHICLE_COLUMNS.add(col("emptyMileage", "绌鸿浇閲岀▼(鍏噷)", 140));
+        ENERGY_VEHICLE_COLUMNS.add(col("freight", "璐ц繍閲�(鍚�)", 120));
+        ENERGY_VEHICLE_COLUMNS.add(col("turnover", "鍛ㄨ浆閲�(鍚ㄥ叕閲�)", 140));
+        ENERGY_VEHICLE_COLUMNS.add(col("tripCount", "杞︽", 90));
+        ENERGY_VEHICLE_COLUMNS.add(col("fuelUnit", "鐕冩枡鍗曚綅", 100));
+        ENERGY_VEHICLE_COLUMNS.add(col("fuelConsumption", "鐕冩枡娑堣�楅噺", 120));
+        ENERGY_VEHICLE_COLUMNS.add(col("avgDistance", "骞冲潎杩愯窛", 110));
+        ENERGY_VEHICLE_COLUMNS.add(col("avgLoadedTonnage", "骞冲潎杞介噸鍚ㄤ綅", 130));
+        ENERGY_VEHICLE_COLUMNS.add(col("avgTripMileage", "骞冲潎杞︽閲岀▼", 130));
+        ENERGY_VEHICLE_COLUMNS.add(col("fuelPer100km", "鐧惧叕閲屾补鑰�", 120));
+        ENERGY_VEHICLE_COLUMNS.add(col("turnoverFuel", "鍛ㄨ浆閲忔补鑰�", 120));
+        ENERGY_AUTH_COLUMNS.add(col("reportPeriod", "鎶ヨ〃鏈�", 100));
+        ENERGY_AUTH_COLUMNS.add(col("plateNo", "杞︾墝鍙�", 110));
+        ENERGY_AUTH_COLUMNS.add(col("vehicleType", "杞﹁締绫诲瀷", 130));
+        ENERGY_AUTH_COLUMNS.add(col("fuelType", "鐕冩枡绫诲瀷", 110));
+        ENERGY_AUTH_COLUMNS.add(col("markedTonnage", "鏍囪鍚ㄤ綅", 100));
+        ENERGY_AUTH_COLUMNS.add(col("tractionQuality", "鐗靛紩璐ㄩ噺", 110));
+
+        PAX_INDIVIDUAL_COLUMNS.add(col("reportPeriod", "鎶ヨ〃鏈�", 100));
+        PAX_INDIVIDUAL_COLUMNS.add(col("regionCode", "鎵�灞炲湴鍖�", 110));
+        PAX_INDIVIDUAL_COLUMNS.add(col("city", "甯傚窞", 110));
+        PAX_INDIVIDUAL_COLUMNS.add(col("enterpriseCode", "浼佷笟浠g爜", 130));
+        PAX_INDIVIDUAL_COLUMNS.add(col("enterpriseName", "浼佷笟鍚嶇О", 220));
+        PAX_INDIVIDUAL_COLUMNS.add(col("passengerCount", "涓綋瀹㈣繍閲�", 130));
+        PAX_INDIVIDUAL_COLUMNS.add(col("turnover", "涓綋鏃呭鍛ㄨ浆閲�", 150));
+
+        WYC_TOTAL_COLUMNS.add(col("reportPeriod", "鎶ヨ〃鏈�", 100));
+        WYC_TOTAL_COLUMNS.add(col("pinK", "鍏ㄧ渷缃戠害杞﹀杩愰噺(涓囦汉娆�)", 210));
+        WYC_TOTAL_COLUMNS.add(col("pinCK", "鍏朵腑鍩庡競鍐呭杩愰噺(涓囦汉娆�)", 210));
+        WYC_TOTAL_COLUMNS.add(col("pinZ", "鍏ㄧ渷缃戠害杞﹀懆杞噺(涓囦汉鍏噷)", 220));
+        WYC_TOTAL_COLUMNS.add(col("pinCZ", "鍏朵腑鍩庡競鍐呭懆杞噺(涓囦汉鍏噷)", 220));
+
+        WYC_ORDER_COLUMNS.add(col("reportPeriod", "鎶ヨ〃鏈�", 100));
+        WYC_ORDER_COLUMNS.add(col("pinK", "鍏ㄧ渷瀹㈣繍閲�(涓囦汉娆�)", 170));
+        WYC_ORDER_COLUMNS.add(col("pinCK", "鍏朵腑鍩庡競鍐呭杩愰噺", 170));
+        WYC_ORDER_COLUMNS.add(col("pinZ", "鍏ㄧ渷鍛ㄨ浆閲�(涓囦汉鍏噷)", 180));
+        WYC_ORDER_COLUMNS.add(col("pinCZ", "鍏朵腑鍩庡競鍐呭懆杞噺", 170));
+        WYC_ORDER_COLUMNS.add(col("orderSum", "璁㈠崟鍚堣(鍗�)", 130));
+        String[] wycOrderCityProps = { "orderWuhan", "orderHuangshi", "orderShiyan", "orderYichang", "orderXiangyang",
+                "orderEzhou", "orderJingmen", "orderXiaogan", "orderJingzhou", "orderHuanggang", "orderXianning",
+                "orderSuizhou", "orderEnshi", "orderXiantao", "orderQianjiang", "orderTianmen", "orderShennong" };
+        String[] wycOrderCityNames = { "姝︽眽", "榛勭煶", "鍗佸牥", "瀹滄槍", "瑗勯槼", "閯傚窞", "鑽嗛棬", "瀛濇劅", "鑽嗗窞", "榛勫唸",
+                "鍜稿畞", "闅忓窞", "鎭╂柦", "浠欐", "娼滄睙", "澶╅棬", "绁炲啘鏋�" };
+        for (int i = 0; i < wycOrderCityProps.length; i++) {
+            WYC_ORDER_COLUMNS.add(col(wycOrderCityProps[i], wycOrderCityNames[i] + "璁㈠崟(鍗�)", 120));
+        }
+
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1