From 0225ef3c66a2cc57dfc572b85848178bedd22fa3 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期四, 02 四月 2026 17:00:01 +0800
Subject: [PATCH] fix:委托方大屏项目列表本月检查风险计算
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java | 80 +++++++++++++++++++++-------------------
1 files changed, 42 insertions(+), 38 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
index a07a2a2..1cc1393 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
@@ -98,11 +98,29 @@
List<Project> projects = projectMapper.selectList(projectWrapper);
// 1. 统计项目总数及分类
- vo.setProjectTotal(projects.size());
long housingCount = projects.stream().filter(p -> p.getType() != null && p.getType() == 0).count();
long municipalCount = projects.stream().filter(p -> p.getType() != null && p.getType() == 1).count();
- vo.setHousingProjectCount((int) housingCount);
- vo.setMunicipalProjectCount((int) municipalCount);
+
+ ClientParam clientParam = null;
+ if (clientId != null) {
+ clientParam = clientParamMapper.selectOne(
+ new LambdaQueryWrapper<ClientParam>()
+ .eq(ClientParam::getClientId, clientId.intValue())
+ );
+ }
+
+ int effectiveHousingCount = resolveDisplayProjectCount(
+ clientParam != null ? clientParam.getHousingProjectNum() : null,
+ housingCount
+ );
+ int effectiveMunicipalCount = resolveDisplayProjectCount(
+ clientParam != null ? clientParam.getMunicipalProjectNum() : null,
+ municipalCount
+ );
+
+ vo.setProjectTotal(effectiveHousingCount + effectiveMunicipalCount);
+ vo.setHousingProjectCount(effectiveHousingCount);
+ vo.setMunicipalProjectCount(effectiveMunicipalCount);
// 计算检查覆盖率(仅当查询时间范围为当月时才计算)
List<Integer> projectIds = projects.stream().map(Project::getId).collect(Collectors.toList());
@@ -139,15 +157,6 @@
.distinct()
.toList();
- // 查询配置的项目总数
- ClientParam clientParam = null;
- if (clientId != null) {
- clientParam = clientParamMapper.selectOne(
- new LambdaQueryWrapper<ClientParam>()
- .eq(ClientParam::getClientId, clientId.intValue())
- );
- }
-
// 房建检查覆盖率
List<Integer> housingProjectIds = projects.stream()
.filter(p -> p.getType() != null && p.getType() == 0)
@@ -157,12 +166,8 @@
.filter(housingProjectIds::contains)
.count();
- // 使用配置的房建项目总数,如果没有配置则使用实际数量
- int configuredHousingNum = (clientParam != null && clientParam.getHousingProjectNum() != null)
- ? clientParam.getHousingProjectNum()
- : (int) housingCount;
vo.setHousingInspectionCoverage(
- configuredHousingNum > 0 ? (int) Math.round(checkedHousingCount * 100.0 / configuredHousingNum) : 0
+ effectiveHousingCount > 0 ? (int) Math.round(checkedHousingCount * 100.0 / effectiveHousingCount) : 0
);
// 市政检查覆盖率
@@ -174,12 +179,8 @@
.filter(municipalProjectIds::contains)
.count();
- // 使用配置的市政项目总数,如果没有配置则使用实际数量
- int configuredMunicipalNum = (clientParam != null && clientParam.getMunicipalProjectNum() != null)
- ? clientParam.getMunicipalProjectNum()
- : (int) municipalCount;
vo.setMunicipalInspectionCoverage(
- configuredMunicipalNum > 0 ? (int) Math.round(checkedMunicipalCount * 100.0 / configuredMunicipalNum) : 0
+ effectiveMunicipalCount > 0 ? (int) Math.round(checkedMunicipalCount * 100.0 / effectiveMunicipalCount) : 0
);
} else {
vo.setHousingInspectionCoverage(0);
@@ -269,9 +270,7 @@
vo.setInspectedCount(0);
vo.setInspectedHousingCount(0);
vo.setInspectedMunicipalCount(0);
- vo.setUninspectedCount(projects.size());
- vo.setUninspectedHousingCount(vo.getHousingProjectCount());
- vo.setUninspectedMunicipalCount(vo.getMunicipalProjectCount());
+ fillUninspectedProjectCounts(vo);
return;
}
@@ -287,9 +286,7 @@
vo.setInspectedCount(0);
vo.setInspectedHousingCount(0);
vo.setInspectedMunicipalCount(0);
- vo.setUninspectedCount(projects.size());
- vo.setUninspectedHousingCount(vo.getHousingProjectCount());
- vo.setUninspectedMunicipalCount(vo.getMunicipalProjectCount());
+ fillUninspectedProjectCounts(vo);
return;
}
@@ -327,16 +324,7 @@
vo.setInspectedMunicipalCount((int) inspectedProjects.stream()
.filter(p -> p.getType() != null && p.getType() == 1).count());
- // 未检查项目统计
- List<Project> uninspectedProjects = projects.stream()
- .filter(p -> !inspectedProjectIds.contains(p.getId()))
- .toList();
-
- vo.setUninspectedCount(uninspectedProjects.size());
- vo.setUninspectedHousingCount((int) uninspectedProjects.stream()
- .filter(p -> p.getType() != null && p.getType() == 0).count());
- vo.setUninspectedMunicipalCount((int) uninspectedProjects.stream()
- .filter(p -> p.getType() != null && p.getType() == 1).count());
+ fillUninspectedProjectCounts(vo);
}
/**
@@ -732,6 +720,22 @@
return DateUtil.endOfMonth(date);
}
+ private int resolveDisplayProjectCount(Integer configuredCount, long actualCount) {
+ int actualProjectCount = (int) actualCount;
+ if (configuredCount == null) {
+ return actualProjectCount;
+ }
+ return Math.max(configuredCount, actualProjectCount);
+ }
+
+ private void fillUninspectedProjectCounts(OngoingProjectDashboardVO vo) {
+ int uninspectedHousingCount = Math.max(vo.getHousingProjectCount() - vo.getInspectedHousingCount(), 0);
+ int uninspectedMunicipalCount = Math.max(vo.getMunicipalProjectCount() - vo.getInspectedMunicipalCount(), 0);
+ vo.setUninspectedHousingCount(uninspectedHousingCount);
+ vo.setUninspectedMunicipalCount(uninspectedMunicipalCount);
+ vo.setUninspectedCount(uninspectedHousingCount + uninspectedMunicipalCount);
+ }
+
/**
* 判断给定的日期范围是否为当前月份
*
--
Gitblit v1.7.1