From 0bde3591135ef422142b5bff1c8f37b0c271b26f Mon Sep 17 00:00:00 2001 From: hongqiwei <1143662660@qq.com> Date: Fri, 23 Oct 2026 11:35:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E6=A1=88=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/ProposalCommonServiceImpl.java | 64 ++++++------ src/main/resources/logback.xml | 98 +++++++++++++++++-- .../zhgh/welfare/projectMange/index.html | 12 ++- 3 files changed, 131 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java index bf5706d..4d17889 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java @@ -82,16 +82,7 @@ import java.util.stream.Collectors; @IocBean(args = {"refer:dao"}) public class ProposalCommonServiceImpl extends BaseServiceImpl implements ProposalCommonService { - /** 确定立案提案的 Word 模板编码。 */ - private static final String PROPOSAL_CONFIRM_FILING_TEMPLATE_CODE = "proposal_confirm_filing"; - - /** 工作建议提案的 Word 模板编码。 */ - private static final String PROPOSAL_SUGGESTION_TEMPLATE_CODE = "proposal_suggestion"; - - /** 不予立案提案的 Word 模板编码。 */ - private static final String PROPOSAL_NOT_TEMPLATE_CODE = "proposal_not"; - - /** 历史提案立案结果为空或无法识别时使用的原 Word 模板编码。 */ + /** 所有立案结果统一使用重庆工贸提案征集表模板。 */ private static final String PROPOSAL_DEFAULT_TEMPLATE_CODE = "proposal"; /** PC端提案列表页面的排序字段白名单,页面代码由对应Controller固定传入。 */ @@ -1367,6 +1358,11 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp execute(sql); NutMap docData = (NutMap) sql.getResult(); + // 提案可能已被删除,避免在读取模板字段时产生空指针。 + if (docData == null) { + throw new BaseException("提案信息不存在"); + } + //处理下富文本 String brief = docData.getString("brief"); String measures = docData.getString("measures"); @@ -1381,12 +1377,23 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp ProcessInstance processInstance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", id)); List doneTaskVos = new ArrayList<>(); - List doneTaskList = flowEngine.processTaskService().getDoneTaskList(processInstance.getId(), null); - for (ProcessTask doneTask : doneTaskList) { - ProcessTaskVO taskVO = flowEngine.processTaskService().findById(doneTask.getId()); - doneTaskVos.add(taskVO); + // 尚未启动或缺少 WF 实例的提案仍导出基础信息,附议和审批栏保持为空。 + if (processInstance != null) { + List doneTaskList = flowEngine.processTaskService().getDoneTaskList(processInstance.getId(), null); + for (ProcessTask doneTask : doneTaskList) { + ProcessTaskVO taskVO = flowEngine.processTaskService().findById(doneTask.getId()); + if (taskVO != null && taskVO.getExt() != null) { + doneTaskVos.add(taskVO); + } + } } + // 附议人单元格仅展示已完成附议任务中的姓名,多人以顿号分隔并去重。 + docData.put("secondNames", doneTaskVos.stream() + .filter(task -> "second".equals(task.getTaskName())) + .map(task -> task.getTaskFormData().getStr("userName")) + .filter(StrUtil::isNotBlank).distinct().collect(Collectors.joining("、"))); + // 按任务节点分组 Map> taskGroups = doneTaskVos.stream() .filter(Objects::nonNull) @@ -1394,6 +1401,17 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp docData.putAll(taskGroups); putProposalExportTaskAliases(id, taskGroups, docData); + // 中文区块名称保持与现有模板一致,实际审核记录按 WF 节点编码匹配。 + // 区块内继续读取 taskFormData 的意见、姓名和日期;无记录时写入空列表,避免同名节点误填。 + Map approvalTemplateNodes = Map.of( + "分工会主席审批", "delegation", + "校工会主席审批", "schoolUnionChairApproval", + "分管校领导审批", "school_leader"); + approvalTemplateNodes.forEach((templateKey, taskName) -> docData.put(templateKey, doneTaskVos.stream() + .filter(task -> taskName.equals(task.getTaskName())) + .sorted(Comparator.comparing(ProcessTaskVO::getFinishTime, Comparator.nullsLast(Comparator.naturalOrder()))) + .collect(Collectors.toList()))); + // 提案附议 List secondInfos = new ArrayList<>(); List secondTaskVos = taskGroups.get("提案附议"); @@ -1475,29 +1493,13 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp docData.put("secondedList", secondInfos); docData.put("delegationAuditList", delegationAuditList); - String templateCode = getProposalTemplateCode(docData.getString("caseFilingResult")); try { - XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate(templateCode), config).render(docData).writeAndClose(byteArrayOutputStream); + XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate(PROPOSAL_DEFAULT_TEMPLATE_CODE), config).render(docData).writeAndClose(byteArrayOutputStream); } catch (IOException e) { log.error("提案导出失败{},提案id:{}", e.getMessage(), id); } } - /** - * 根据立案结果选择数据库办公模板编码。 - * - * @param caseFilingResult 立案结果字典编码:CONFIRM_FILING、SUGGESTION 或 NOT - * @return 对应的 Word 模板编码;历史空值或未知编码返回 proposal - */ - private String getProposalTemplateCode(String caseFilingResult) { - return switch (StrUtil.nullToEmpty(caseFilingResult)) { - case "CONFIRM_FILING" -> PROPOSAL_CONFIRM_FILING_TEMPLATE_CODE; - case "SUGGESTION" -> PROPOSAL_SUGGESTION_TEMPLATE_CODE; - case "NOT" -> PROPOSAL_NOT_TEMPLATE_CODE; - default -> PROPOSAL_DEFAULT_TEMPLATE_CODE; - }; - } - /** * 将现行工作流节点映射到历史提案表模板使用的区块名称,并按主协办单位拆分办理答复。 * 模板仍使用旧节点名称时,避免已完成的意见和答复因键名不一致而无法渲染。 diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 4a00be9..87e2ef2 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,17 +1,85 @@ - + - + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + + + + ${LOG_HOME}/app.log + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + ${LOG_HOME}/app-%d{yyyy-MM-dd}.log + 300 + + + + + + + + + + + + + + + + + + + + + + + + <!– ERROR级别日志文件配置 –> ${LOG_HOME}/error.log @@ -41,19 +109,31 @@ ${LOG_HOME}/error-%d{yyyy-MM-dd}.log - 30 + 300 - + <!– 框架日志级别 –> + <!– –> - + <!– 日志级别和appender的关联 –> + - + --> + + + + diff --git a/src/main/resources/views/platform/zhgh/welfare/projectMange/index.html b/src/main/resources/views/platform/zhgh/welfare/projectMange/index.html index 259cef1..b483e45 100644 --- a/src/main/resources/views/platform/zhgh/welfare/projectMange/index.html +++ b/src/main/resources/views/platform/zhgh/welfare/projectMange/index.html @@ -88,7 +88,8 @@ layout("/layouts/platform.html"){