From f929ed7c58c3cb850306f7696d1b484bddc1f2c9 Mon Sep 17 00:00:00 2001 From: buaixuexideshitongxue <2936013465@qq.com> Date: Sat, 10 Oct 2026 17:19:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9F=A5=E8=AF=A2=E6=80=A7=E8=83=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/ReportProjectController.java | 49 ++++++++++++------- .../supervision/service/SupDepartService.java | 10 ++++ .../resources/mapper/ReportProjectMapper.xml | 2 +- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/biutag/supervision/controller/report/ReportProjectController.java b/src/main/java/com/biutag/supervision/controller/report/ReportProjectController.java index bee5b72..fac8a8c 100644 --- a/src/main/java/com/biutag/supervision/controller/report/ReportProjectController.java +++ b/src/main/java/com/biutag/supervision/controller/report/ReportProjectController.java @@ -31,6 +31,7 @@ import com.biutag.supervision.pojo.param.Report.ReportProjectQueryParam; import com.biutag.supervision.pojo.param.entryWindow.EntryWindowQueryParam; import com.biutag.supervision.pojo.param.statement.StatementQueryParam; import com.biutag.supervision.pojo.request.reportProject.ReportProjectDeleteRequest; +import com.biutag.supervision.pojo.vo.DepartTree; import com.biutag.supervision.pojo.vo.entryWindow.EntryWindowExcelVo; import com.biutag.supervision.pojo.vo.entryWindow.EntryWindowVo; import com.biutag.supervision.pojo.vo.excel.ExcelControlPriceVo; @@ -258,6 +259,11 @@ public class ReportProjectController { @PostMapping("/pageConditionVo") public Result> pageConditionVo(@RequestBody StatementQueryParam queryParam){ QueryWrapper wrapper=new QueryWrapper<>(); + List departs = departService.list(new LambdaQueryWrapper() + .orderByAsc(SupDepart::getOrderNo)); + List departTree = departService.buildTreeAll(departs); + Map departMap = departs.stream() + .collect(Collectors.toMap(SupDepart::getId, depart -> depart)); wrapper.eq(StrUtil.isNotBlank(queryParam.getNode()),"p.node",queryParam.getNode()) .like(StrUtil.isNotBlank(queryParam.getReportName()),"p.report_name",queryParam.getReportName()) @@ -278,10 +284,10 @@ public class ReportProjectController { } if (StrUtil.isNotBlank(queryParam.getAuditUnitId())) { // 获取选择的审计单位及其所有子部门的ID - wrapper.in("p.audit_unit_id", departService.getAllNodeIds(queryParam.getAuditUnitId())); + wrapper.in("p.audit_unit_id", departService.getAllNodeIds(queryParam.getAuditUnitId(), departTree)); } if (StrUtil.isNotBlank(queryParam.getProjectUnitId())){ - wrapper.in("p.project_unit_id", departService.getAllNodeIds(queryParam.getProjectUnitId())); + wrapper.in("p.project_unit_id", departService.getAllNodeIds(queryParam.getProjectUnitId(), departTree)); } wrapper.groupBy("p.id"); wrapper.eq("p.delete_flag", DeleteStatusEnum.NO.getCode()); @@ -291,12 +297,12 @@ public class ReportProjectController { boolean superAuth = AppConstants.USER_TYPE_SUPER.equals(user.getUserType()); boolean firstAuth = superAuth || user.getRoleCodes().contains(RoleCodeEnum.FIRST_ADMIN.getCode()); List userAuthOrgIds = firstAuth - ? departService.getAllNodeIds(ROOTID) - : (user.getAuthDepartIds().isEmpty() ? departService.getAllNodeIds(user.getDepartId()) : departService.getAllNodeIds(user.getAuthDepartIds())); + ? departService.getAllNodeIds(ROOTID, departTree) + : (user.getAuthDepartIds().isEmpty() ? departService.getAllNodeIds(user.getDepartId(), departTree) : departService.getAllNodeIds(user.getAuthDepartIds(), departTree)); if (!superAuth) { wrapper.and(p -> p.in("p.audit_unit_id", userAuthOrgIds).or().in("p.project_unit_id", userAuthOrgIds)); } - List dszdOrgIds = departService.getAllNodeIds(AppConstants.DSZD); + List dszdOrgIds = departService.getAllNodeIds(AppConstants.DSZD, departTree); // 页面鉴权 Map>> authStrategy = Map.of( // “审计单位”为督审支队的项目 @@ -319,25 +325,30 @@ public class ReportProjectController { Page conditionPage = reportProjectService.getConditionPage(new Page<>(queryParam.getCurrent(), queryParam.getSize()), wrapper); conditionPage.getRecords().forEach(s->{ - SupDepart auditById = departService.getById(s.getAuditUnitId()); - SupDepart projectById = departService.getById(s.getProjectUnitId()); - if (3==(auditById.getLevel())){ - SupDepart byPId = departService.getById(auditById.getPid()); - s.setAuditUnitStr(byPId.getShortName() +"/" + auditById.getShortName()); - }else { - s.setAuditUnitStr(auditById.getShortName() +"/"); - } - if (3==projectById.getLevel()){ - SupDepart byPId = departService.getById(projectById.getPid()); - s.setProjectUnitStr(byPId.getShortName() +"/" + projectById.getShortName()); - }else { - s.setProjectUnitStr(projectById.getShortName() +"/"); - } + s.setAuditUnitStr(getConditionUnitStr(departMap, s.getAuditUnitId(), + StrUtil.blankToDefault(s.getAuditUnitStr(), s.getAuditUnit()))); + s.setProjectUnitStr(getConditionUnitStr(departMap, s.getProjectUnitId(), + StrUtil.blankToDefault(s.getProjectUnitStr(), s.getProjectUnit()))); }); return Result.success(conditionPage); } + private String getConditionUnitStr(Map departMap, String departId, String fallbackName) { + SupDepart depart = departMap.get(departId); + if (depart == null) { + return StrUtil.blankToDefault(fallbackName, ""); + } + if (Integer.valueOf(3).equals(depart.getLevel())) { + SupDepart parent = departMap.get(depart.getPid()); + if (parent == null) { + return StrUtil.blankToDefault(fallbackName, ""); + } + return parent.getShortName() + "/" + depart.getShortName(); + } + return depart.getShortName() + "/"; + } + //审计情况表导出 @PostMapping("/excelConditionVo") public void excelConditionVo(@RequestBody StatementQueryParam queryParam, HttpServletResponse response) throws Exception { diff --git a/src/main/java/com/biutag/supervision/service/SupDepartService.java b/src/main/java/com/biutag/supervision/service/SupDepartService.java index a809ad9..36f1e0d 100644 --- a/src/main/java/com/biutag/supervision/service/SupDepartService.java +++ b/src/main/java/com/biutag/supervision/service/SupDepartService.java @@ -70,6 +70,16 @@ public class SupDepartService extends ServiceImpl { return getAllNode(departIds).stream().map(DepartTree::getId).toList(); } + public List getAllNodeIds(String departId, List treeList) { + return getAllNodeIds(List.of(departId), treeList); + } + + public List getAllNodeIds(Collection departIds, List treeList) { + List nodes = new ArrayList<>(); + getAllNodeRecursive(departIds, treeList, nodes); + return nodes.stream().map(DepartTree::getId).toList(); + } + public List getAllNode(Collection departIds) { List treeList = buildTreeAll(); List nodes = new ArrayList<>(); diff --git a/src/main/resources/mapper/ReportProjectMapper.xml b/src/main/resources/mapper/ReportProjectMapper.xml index 53c4d8a..fec664d 100644 --- a/src/main/resources/mapper/ReportProjectMapper.xml +++ b/src/main/resources/mapper/ReportProjectMapper.xml @@ -145,7 +145,7 @@ LIMIT 1 ) as approvalSupervisor, rv.review_content as content - from report_project p LEFT JOIN report_flow flow on p.id = flow.report_id + from report_project p left join report_review rv on p.id = rv.report_id ${ew.getCustomSqlSegment}