From f03757116ad36c9ca13f8d5a61fdb879bbe8de4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=84=E9=94=90=E6=B3=A2?= <10549902+zhuangruibo@user.noreply.gitee.com> Date: Thu, 4 Jun 2026 20:41:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E6=B3=95=E7=AB=AF-=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enforcement/AppEnfLoginController.java | 4 - .../report/RegistrationController.java | 8 + .../mapper/EnforcementRegistrationMapper.java | 14 + .../IEnforcementRegistrationReport.java | 5 + .../EnforcementRegistrationReportImpl.java | 42 +- .../EnforcementRegistrationReportMapper.xml | 36 ++ .../src/api/efcode/report/registration.ts | 147 +++++++ .../efcode/report/registration/index.vue | 4 +- .../efcode/report/registration/indexChart.vue | 376 ++++++++++------- .../efcode/report/registration/indexList.vue | 391 ++++++++++++------ 10 files changed, 711 insertions(+), 316 deletions(-) create mode 100644 zdxt-web-client/zdxt-admin-plus-ui/src/api/efcode/report/registration.ts diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java index 5f21b605..df19d459 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java @@ -1,8 +1,6 @@ package com.zdxt.enforcementcode.controller.app.enforcement; import cn.dev33.satoken.annotation.SaIgnore; -import com.alibaba.fastjson.JSONObject; -import com.zdxt.enforcementcode.controller.app.utils.HttpUtil; import com.zdxt.enforcementcode.common.util.CommonUtil; import com.zdxt.enforcementcode.service.enforcement.IAppEnfLoginService; import com.zdxt.enforcementcode.controller.app.LoginController; @@ -14,11 +12,9 @@ import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysDeptService; import org.dromara.system.service.ISysUserService; -import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.util.HashMap; -import java.util.List; import java.util.Map; /** diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java index 905a0498..bd9d7565 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/web/supervision/report/RegistrationController.java @@ -76,6 +76,14 @@ public class RegistrationController { return R.ok(registrationReport.deptRankChart(bo)); } + /** + * 接口5.5:被检查企业次数排行(柱状图,TOP10) + */ + @GetMapping("/enterpriseRankChart") + public R> enterpriseRankChart(EnforcementRegistrationBo bo) { + return R.ok(registrationReport.enterpriseRankChart(bo)); + } + /** * 接口6:执法分析列表(按企业维度统计执法次数,分页) */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java index 2aa12b80..a8617ed9 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/mapper/EnforcementRegistrationMapper.java @@ -10,6 +10,7 @@ import com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo; import com.zdxt.enforcementcode.domain.vo.enterprise.EnforcementRegistrationListVo; import com.zdxt.enforcementcode.domain.vo.report.ChartDataVo; import com.zdxt.enforcementcode.domain.vo.report.RegistrationAnalysisVo; +import com.zdxt.enforcementcode.domain.vo.report.RegistrationStatisticsVo; import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -81,6 +82,13 @@ public interface EnforcementRegistrationMapper extends BaseMapperPlus selectReportDeptRankChart(@Param("bo") EnforcementRegistrationBo bo, @Param("dataFilter") String dataFilter); + /** + * 报表-被检查企业次数排行图表(GROUP BY enterprise_number,前10) + */ + List selectReportEnterpriseRankChart(@Param("bo") EnforcementRegistrationBo bo, + @Param("dataFilter") String dataFilter); + /** * 报表-执法分析排名(GROUP BY enterprise_number) */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/IEnforcementRegistrationReport.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/IEnforcementRegistrationReport.java index 59690801..b1182ad5 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/IEnforcementRegistrationReport.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/IEnforcementRegistrationReport.java @@ -42,6 +42,11 @@ public interface IEnforcementRegistrationReport { */ List deptRankChart(EnforcementRegistrationBo bo); + /** + * 被检查企业次数排行(柱状图TOP10) + */ + List enterpriseRankChart(EnforcementRegistrationBo bo); + /** * 执法分析列表(按企业维度统计,分页) */ diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/EnforcementRegistrationReportImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/EnforcementRegistrationReportImpl.java index 471668ae..6651ced6 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/EnforcementRegistrationReportImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/report/impl/EnforcementRegistrationReportImpl.java @@ -3,7 +3,6 @@ package com.zdxt.enforcementcode.report.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zdxt.enforcementcode.common.util.DataFilterUtil; -import com.zdxt.enforcementcode.domain.EnforcementRegistration; import com.zdxt.enforcementcode.domain.bo.EnforcementRegistrationBo; import com.zdxt.enforcementcode.domain.vo.EnforcementRegistrationVo; import com.zdxt.enforcementcode.domain.vo.report.ChartDataVo; @@ -42,33 +41,26 @@ public class EnforcementRegistrationReportImpl implements IEnforcementRegistrati @Override public RegistrationStatisticsVo statistics(EnforcementRegistrationBo bo) { String dataFilter = DataFilterUtil.buildFilterSql(true, true); - List list = registrationMapper.selectReportAll(bo, dataFilter); - - RegistrationStatisticsVo vo = new RegistrationStatisticsVo(); - long total = list.size(); - vo.setTotal(total); - - // 联合执法: has_union=1 且 union_no 不为空 - long unionCount = list.stream() - .filter(r -> r.getHasUnion() != null && r.getHasUnion() == 1 - && StringUtils.isNotBlank(r.getUnionNo())) - .count(); - vo.setUnionCount(unionCount); - vo.setUnionPercent(total > 0 ? PERCENT_FORMAT.format((double) unionCount / total) : "0.00%"); - - // 检查类别统计(默认取"01"对应的类别) String checkCategoryCode = StringUtils.isNotBlank(bo.getCheckCategory()) ? bo.getCheckCategory() : "01"; + + // 单条SQL聚合查询,不加载全量数据 + RegistrationStatisticsVo vo = registrationMapper.selectReportStatistics(bo, dataFilter, checkCategoryCode); + if (vo == null) { + vo = new RegistrationStatisticsVo(); + } + + long total = vo.getTotal(); + // 计算占比 + vo.setUnionPercent(total > 0 ? PERCENT_FORMAT.format((double) vo.getUnionCount() / total) : "0.00%"); + vo.setCheckPercent(total > 0 ? PERCENT_FORMAT.format((double) vo.getCheckCount() / total) : "0.00%"); + + // 字典翻译检查类别名称 String checkCategoryName = dictTypeService.selectDictDataByType("check_category").stream() .filter(d -> checkCategoryCode.equals(d.getDictValue())) .map(SysDictDataVo::getDictLabel) .findFirst().orElse(""); - long checkCount = list.stream() - .filter(r -> checkCategoryCode.equals(r.getCheckCategory())) - .count(); vo.setCheckCategoryName(checkCategoryName); - vo.setCheckCount(checkCount); - vo.setCheckPercent(total > 0 ? PERCENT_FORMAT.format((double) checkCount / total) : "0.00%"); - + return vo; } @@ -114,6 +106,12 @@ public class EnforcementRegistrationReportImpl implements IEnforcementRegistrati return registrationMapper.selectReportDeptRankChart(bo, dataFilter); } + @Override + public List enterpriseRankChart(EnforcementRegistrationBo bo) { + String dataFilter = DataFilterUtil.buildFilterSql(true, true); + return registrationMapper.selectReportEnterpriseRankChart(bo, dataFilter); + } + @Override public TableDataInfo analysisRank(EnforcementRegistrationBo bo, PageQuery pageQuery) { String dataFilter = DataFilterUtil.buildFilterSql(true, true); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementRegistrationReportMapper.xml b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementRegistrationReportMapper.xml index b52c1a7b..ebd34c90 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementRegistrationReportMapper.xml +++ b/zdxt-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/EnforcementRegistrationReportMapper.xml @@ -8,6 +8,15 @@ AND is_submit = 1 AND is_delete = 0 + AND bureau_dept_name is not null + AND law_enforcement_id is not null + AND enterprise_name is not null + AND enterprise_number is not null + AND law_enforcer is not null + AND law_enforcer_two is not null + AND is_complaint is not null + AND check_category is not null + AND bureau_dept_id is not null AND (status = 0 OR status IS NULL) AND bureau_dept_name LIKE CONCAT('%', #{bo.bureauDeptName}, '%') @@ -85,6 +94,18 @@ + + + + + +