From b80bb7253a87931fea5a1a788fc4c6ffb204d245 Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期日, 20 九月 2026 10:54:05 +0800
Subject: [PATCH] fix(报表): 补齐客运站/物流站场投资明细表的就绪校验与预览类型
---
traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 51 insertions(+), 4 deletions(-)
diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java b/traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java
index b83bd0b..03e2803 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/reportexport/service/ReportExportService.java
@@ -226,6 +226,36 @@
}
break;
}
+ case "investPassengerDetail":
+ case "investLogisticsDetail": {
+ boolean paxDetail = "investPassengerDetail".equals(t);
+ String catName = paxDetail ? "瀹㈣繍绔欏満" : "鐗╂祦鍥尯";
+ String catLabel = paxDetail ? "瀹㈣繍绔欏満鎶曡祫鏈堟姤" : "鐗╂祦鍥尯鎶曡祫鏈堟姤";
+ List<InvestmentProject> catProjects = investProjectMapper.selectList(
+ new LambdaQueryWrapper<InvestmentProject>().eq(InvestmentProject::getCategory, catName));
+ final List<Long> catIds = new ArrayList<>();
+ for (InvestmentProject cp : catProjects) catIds.add(cp.getId());
+ if (catIds.isEmpty()) {
+ rows = 0;
+ notes.add("缂烘暟鎹細" + catLabel);
+ } else {
+ rows = addReadyCount(() -> investMonthlyMapper.selectCount(
+ periodQw(period, mode, InvestmentMonthly::getReportPeriod)
+ .in(InvestmentMonthly::getProjectId, catIds)), catLabel, notes);
+ }
+ String detTpl = paxDetail ? "妯℃澘_X鏈堝杩愮珯鎶曡祫鏄庣粏琛�.xlsx" : "妯℃澘_X鏈堢墿娴佺珯鍦烘姇璧勬槑缁�.xls";
+ try {
+ if (resolveAnyTemplate(investTemplateDir, detTpl) == null) {
+ rows = 0;
+ notes.add("docs/鎶曡祫/妯℃澘 涓嬬己灏戙��" + detTpl + "銆�");
+ }
+ } catch (Exception ex) {
+ rows = 0;
+ notes.add("姣嶇増瀹氫綅澶辫触锛�" + ex.getMessage());
+ }
+ auditTypes.add("INVEST");
+ break;
+ }
default:
rows = 0;
notes.add("鏈煡鎶ヨ〃绫诲瀷锛�" + t);
@@ -381,7 +411,9 @@
coverage.addAll(investCover);
// 鎶曡祫涓哄綋鏈堟姤琛紙鏃� 1..N 绱鍙e緞锛夛紝鍙彁绀哄綋鏈堢己澶�
if (!investCover.contains(month)) missing.add(month);
- investPreview(period, mode, summary, problems);
+ if ("investPassengerDetail".equals(t)) investPreview(period, mode, "瀹㈣繍绔欏満", summary, problems);
+ else if ("investLogisticsDetail".equals(t)) investPreview(period, mode, "鐗╂祦鍥尯", summary, problems);
+ else investPreview(period, mode, summary, problems);
} else if ("energySummary".equals(t)) {
Long ec = energyMapper.selectCount(periodQw(period, mode, EnergyVehicleQuarterly::getReportPeriod));
if (ec != null && ec > 0) coverage.add(month);
@@ -412,7 +444,8 @@
}
private boolean isInvestType(String t) {
- return "investPlan".equals(t) || "investFiveYearLogistics".equals(t) || "investBillion".equals(t) || "investCounty".equals(t);
+ return "investPlan".equals(t) || "investFiveYearLogistics".equals(t) || "investBillion".equals(t) || "investCounty".equals(t)
+ || "investPassengerDetail".equals(t) || "investLogisticsDetail".equals(t);
}
private boolean isEnergyType(String t) {
@@ -668,9 +701,23 @@
if (allZero) problems.add("鍏ㄧ渷绱鍊煎叏涓� 0锛堝叕浜�/鍑虹鏈堟姤鍙兘鏈鍏ワ級");
}
- /** 鎶曡祫鎽樿锛氶」鐩暟 + 鏈湀瀹屾垚/鑷勾鍒�/鑷紑濮嬬疮璁� */
+ /** 鎶曡祫鎽樿锛氶」鐩暟 + 鏈湀瀹屾垚/鑷勾鍒�/鑷紑濮嬬疮璁★紙鍏ㄦ姇璧勬湀鎶ュ悎璁★紝涓嶅垎绫诲埆锛� */
private void investPreview(String period, String mode, List<Map<String, Object>> summary, List<String> problems) {
- List<InvestmentMonthly> list = investMonthlyMapper.selectList(periodQw(period, mode, InvestmentMonthly::getReportPeriod));
+ investPreview(period, mode, null, summary, problems);
+ }
+
+ /** 鎶曡祫鎽樿锛坈ategory 闈炵┖鏃跺彧缁熻璇ョ被鍒紝濡傚杩愮珯鍦�/鐗╂祦鍥尯鎶曡祫鏄庣粏琛級 */
+ private void investPreview(String period, String mode, String category, List<Map<String, Object>> summary, List<String> problems) {
+ LambdaQueryWrapper<InvestmentMonthly> qw = periodQw(period, mode, InvestmentMonthly::getReportPeriod);
+ if (category != null) {
+ List<InvestmentProject> ps = investProjectMapper.selectList(
+ new LambdaQueryWrapper<InvestmentProject>().eq(InvestmentProject::getCategory, category));
+ List<Long> ids = new ArrayList<>();
+ for (InvestmentProject p : ps) ids.add(p.getId());
+ if (ids.isEmpty()) { problems.add("缂烘暟鎹細搴撳唴娌℃湁銆�" + category + "銆嶉」鐩富妗�"); return; }
+ qw.in(InvestmentMonthly::getProjectId, ids);
+ }
+ List<InvestmentMonthly> list = investMonthlyMapper.selectList(qw);
Set<Long> proj = new HashSet<>();
double monthDone = 0.0, yearCum = 0.0, startCum = 0.0;
for (InvestmentMonthly m : list) {
--
Gitblit v1.9.1