From ec900e5b4dd50d70d00c417b2ec7257408ebf4ff Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 5 Aug 2026 10:27:25 +0800 Subject: [PATCH] commit --- .../impl/ProposalExportServiceImpl.java | 71 +++++++++++++++---- .../views/platform/zhghh5/sys/home/home.js | 10 ++- 2 files changed, 67 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java index 05bb0af8..dd48b3d7 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java @@ -187,6 +187,9 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp info.id, info.name, info.code, + info.caseFilingCode, + info.caseFilingResult, + info.caseFilingType, info.researchFindings, info.brief, info.measures, @@ -194,6 +197,10 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp tcde.unitName, tcde.mobile, type.name AS typeName, + caseFilingResultDict.name AS caseFilingResultName, + caseFilingTypeDict.name AS caseFilingTypeName, + EXISTS (SELECT 1 FROM proposal_consolidation consolidation + WHERE JSON_CONTAINS(consolidation.consolidationIds, JSON_QUOTE(info.id))) AS isConsolidation, tcs.j, tcs.c, tcs.fullName AS sessionName, @@ -204,6 +211,10 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName + LEFT JOIN sys_dict caseFilingResultDict ON caseFilingResultDict.code = info.caseFilingResult + AND caseFilingResultDict.parentId = (SELECT id FROM sys_dict WHERE code = 'PROPOSAL_CASE_FILING_RESULT' LIMIT 1) + LEFT JOIN sys_dict caseFilingTypeDict ON caseFilingTypeDict.code = info.caseFilingType + AND caseFilingTypeDict.parentId = (SELECT id FROM sys_dict WHERE code = 'PROPOSAL_CASE_FILING_TYPE' LIMIT 1) $condition """); Cnd cnd = Cnd.NEW(); @@ -217,23 +228,28 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp list.get(i).put("index", i + 1); list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))); list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))); + // Excel 汇总表使用中文并案标识,避免直接输出数据库布尔值。 + list.get(i).put("isConsolidationName", Boolean.TRUE.equals(list.get(i).getBoolean("isConsolidation")) ? "是" : "否"); // 流程实例 ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id"))); - // 查询附议人信息 - ProcessTask inviteTask = dao().fetch(ProcessTask.class, - Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId()) - .and(ProcessTask::getTaskName, "=", "invite") - .and(ProcessTask::getTaskState, "in", - List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode())) - .desc(ProcessTask::getCreatedAt)); + // 历史提案可能没有迁移流程实例,此时仅不导出附议人,避免影响汇总表其他数据。 + if (instance != null) { + // 查询附议人信息 + ProcessTask inviteTask = dao().fetch(ProcessTask.class, + Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId()) + .and(ProcessTask::getTaskName, "=", "invite") + .and(ProcessTask::getTaskState, "in", + List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode())) + .desc(ProcessTask::getCreatedAt)); - if (inviteTask != null) { - NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable()); - List seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class); - if (Lang.isNotEmpty(seconders)) { - list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(","))); + if (inviteTask != null) { + NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable()); + List seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class); + if (Lang.isNotEmpty(seconders)) { + list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(","))); + } } } } @@ -241,6 +257,10 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp List exportEntities = new ArrayList<>(); exportEntities.add(new ExcelExportEntity("序号", "index", 10)); exportEntities.add(new ExcelExportEntity("提案编号", "code", 20)); + exportEntities.add(new ExcelExportEntity("立案编号", "caseFilingCode", 20)); + exportEntities.add(new ExcelExportEntity("立案结果", "caseFilingResultName", 15)); + exportEntities.add(new ExcelExportEntity("立案类型", "caseFilingTypeName", 15)); + exportEntities.add(new ExcelExportEntity("是否并案", "isConsolidationName", 12)); exportEntities.add(new ExcelExportEntity("提案名称", "name", 20)); exportEntities.add(new ExcelExportEntity("提案案由", "brief", 40)); exportEntities.add(new ExcelExportEntity("代表调研情况", "researchFindings", 40)); @@ -870,18 +890,23 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp info.id, info.name, info.code, + info.caseFilingCode, + info.caseFilingResult, + info.caseFilingType, info.researchFindings, info.brief, info.measures, info.createUserName, tcde.unitName, tcde.mobile, - IF(mer.proposalId IS NOT NULL, '是', '') AS merge, + IF(mer.proposalId IS NOT NULL, '是', '否') AS merge, type.name AS typeName, tcs.j, tcs.c, tcs.fullName AS sessionName, tcd.`name` AS delegationName, + ins.state AS instanceState, + t.displayName AS curTaskName, GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 1 THEN pru.unitName END) AS masterUnitName, GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames FROM @@ -891,6 +916,8 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName + LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id + LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10 LEFT JOIN proposal_reply_unit pru ON pru.proposalId = info.id $condition """); @@ -935,6 +962,24 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp Map processInstanceStateMap = processInstanceState.stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName)); for (NutMap row : list) { + String caseFilingResultCode = row.getString("caseFilingResult"); + String masterUnitName = StrUtil.blankToDefault(row.getString("masterUnitName"), ""); + String slaveUnitNames = StrUtil.blankToDefault(row.getString("slaveUnitNames"), ""); + // 自定义导出没有前端单元格渲染,需要按列表相同规则生成承办单位文本。 + if ("SUGGESTION".equals(caseFilingResultCode)) { + row.put("undertakeUnits", StrUtil.isNotBlank(masterUnitName) ? masterUnitName : slaveUnitNames); + } else if ("CONFIRM_FILING".equals(caseFilingResultCode)) { + List undertakeUnitTexts = new ArrayList<>(); + if (StrUtil.isNotBlank(masterUnitName)) { + undertakeUnitTexts.add("主办:" + masterUnitName); + } + if (StrUtil.isNotBlank(slaveUnitNames)) { + undertakeUnitTexts.add("协办:" + slaveUnitNames); + } + row.put("undertakeUnits", String.join(";", undertakeUnitTexts)); + } else { + row.put("undertakeUnits", ""); + } row.put("caseFilingResult", caseFilingResultMap.get(row.getString("caseFilingResult"))); row.put("caseFilingType", caseFilingTypeMap.get(row.getString("caseFilingType"))); row.put("instanceState", processInstanceStateMap.get(row.getString("instanceState"))); diff --git a/src/main/resources/views/platform/zhghh5/sys/home/home.js b/src/main/resources/views/platform/zhghh5/sys/home/home.js index 1b5ddee2..6c661440 100644 --- a/src/main/resources/views/platform/zhghh5/sys/home/home.js +++ b/src/main/resources/views/platform/zhghh5/sys/home/home.js @@ -33,7 +33,8 @@ const home = {
推荐服务
-
+