From 6de7c0d7ba0e2f74a56c7b71dc083c380e46f0bd Mon Sep 17 00:00:00 2001 From: yinq Date: Tue, 19 May 2026 13:50:23 +0800 Subject: [PATCH] =?UTF-8?q?1.1.46=20=E5=AF=BC=E5=87=BA=E5=87=BA=E5=B7=AE?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=8D=95=20PDF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CrmBusinessTripApplyController.java | 25 ++ .../service/ICrmBusinessTripApplyService.java | 9 + .../impl/CrmBusinessTripApplyServiceImpl.java | 254 +++++++++++++++++- .../main/resources/出差申请单模板.docx | Bin 0 -> 39986 bytes 4 files changed, 287 insertions(+), 1 deletion(-) create mode 100644 ruoyi-modules/ruoyi-oa/src/main/resources/出差申请单模板.docx diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/controller/CrmBusinessTripApplyController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/controller/CrmBusinessTripApplyController.java index a17f17c1..7826fca1 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/controller/CrmBusinessTripApplyController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/controller/CrmBusinessTripApplyController.java @@ -1,6 +1,7 @@ package org.dromara.oa.crm.controller; import java.util.List; +import java.util.Map; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; @@ -13,10 +14,14 @@ import org.dromara.common.log.annotation.Log; import org.dromara.common.web.core.BaseController; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.word.util.WordTemplateUtil; +import com.deepoove.poi.config.Configure; +import org.dromara.oa.crm.word.CrmBusinessTripItineraryLoopRowPolicy; import org.dromara.oa.crm.domain.vo.CrmBusinessTripApplyVo; import org.dromara.oa.crm.domain.bo.CrmBusinessTripApplyBo; import org.dromara.oa.crm.service.ICrmBusinessTripApplyService; @@ -57,6 +62,26 @@ public class CrmBusinessTripApplyController extends BaseController { ExcelUtil.exportExcel(list, "出差申请", CrmBusinessTripApplyVo.class, response); } + /** + * 导出出差申请单 PDF(基于 Word 模板渲染后转换) + * + * @param tripId 出差申请ID + */ + @SaCheckPermission("oa/crm:businessTripApply:export") + @Log(title = "出差申请单PDF导出", businessType = BusinessType.EXPORT) + @GetMapping("/exportTripApplyPdf/{tripId}") + public void exportTripApplyPdf(@NotNull(message = "出差申请ID不能为空") @PathVariable("tripId") Long tripId, + HttpServletResponse response) { + Map data = crmBusinessTripApplyService.buildTripApplyPdfExportData(tripId); + CrmBusinessTripApplyVo vo = crmBusinessTripApplyService.queryById(tripId); + String fileName = "出差申请单_" + (vo != null && StringUtils.isNotBlank(vo.getApplyCode()) + ? vo.getApplyCode() : tripId); + Configure config = Configure.builder() + .bind("行程明细", new CrmBusinessTripItineraryLoopRowPolicy()) + .build(); + WordTemplateUtil.renderToPdfResponse("出差申请单模板.docx", fileName, data, config, response); + } + /** * 获取出差申请详细信息 * diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/ICrmBusinessTripApplyService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/ICrmBusinessTripApplyService.java index 036447f3..3d13cc26 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/ICrmBusinessTripApplyService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/ICrmBusinessTripApplyService.java @@ -8,6 +8,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 出差申请Service接口 @@ -74,4 +75,12 @@ public interface ICrmBusinessTripApplyService { * @return */ CrmBusinessTripApplyVo submitAndFlowStart(CrmBusinessTripApplyBo bo); + + /** + * 组装出差申请单 PDF 导出数据 + * + * @param tripId 出差申请ID + * @return Word 模板数据 + */ + Map buildTripApplyPdfExportData(Long tripId); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmBusinessTripApplyServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmBusinessTripApplyServiceImpl.java index 97aa54e9..1bd3e809 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmBusinessTripApplyServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmBusinessTripApplyServiceImpl.java @@ -1,7 +1,9 @@ package org.dromara.oa.crm.service.impl; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -23,9 +25,17 @@ import org.dromara.oa.crm.domain.CrmCustomerInfo; import org.dromara.oa.erp.mapper.ErpProjectInfoMapper; import org.dromara.oa.crm.mapper.CrmBusinessTripDetailsMapper; +import cn.hutool.core.bean.BeanUtil; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Collection; +import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; @@ -33,6 +43,7 @@ import org.apache.seata.spring.annotation.GlobalTransactional; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.system.api.RemoteCodeRuleService; +import org.dromara.system.api.RemoteUserService; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; @@ -53,6 +64,19 @@ import cn.hutool.core.convert.Convert; @Slf4j public class CrmBusinessTripApplyServiceImpl implements ICrmBusinessTripApplyService { + private static final String DATE_FORMAT = "yyyy-MM-dd"; + + private static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; + + private static final String PRINT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm"; + + private static final Map TRIP_TYPE_LABELS = Map.of( + "1", "安装调试", + "2", "市场交流", + "3", "展会/会议", + "4", "其他" + ); + private final CrmBusinessTripApplyMapper baseMapper; private final CrmBusinessTripDetailsMapper detailsMapper; private final ErpProjectInfoMapper erpProjectInfoMapper; @@ -63,6 +87,9 @@ public class CrmBusinessTripApplyServiceImpl implements ICrmBusinessTripApplySer @DubboReference() private RemoteCodeRuleService remoteCodeRuleService; + @DubboReference + private RemoteUserService remoteUserService; + /** * 查询出差申请 * @@ -381,4 +408,229 @@ public class CrmBusinessTripApplyServiceImpl implements ICrmBusinessTripApplySer baseMapper.updateById(tripApply); }); } + + @Override + public Map buildTripApplyPdfExportData(Long tripId) { + CrmBusinessTripApplyVo apply = queryById(tripId); + if (apply == null) { + throw new ServiceException("出差申请不存在,ID:" + tripId); + } + if (!"3".equals(apply.getTripStatus())) { + throw new ServiceException("仅申请状态为“已审批”时允许导出出差申请单"); + } + + CrmBusinessTripApply entity = baseMapper.selectById(tripId); + Map data = new HashMap<>(24); + data.put("审批编号", strVal(apply.getApplyCode())); + data.put("创建人", strVal(apply.getApplicantName())); + data.put("创建人部门", strVal(apply.getDeptName())); + data.put("创建时间", formatDate(entity == null ? null : entity.getCreateTime())); + data.put("审批状态", "已通过"); + data.put("行程明细", buildItineraryLoopData(apply)); + data.put("审批流程", buildApprovalFlowText(tripId)); + data.put("打印时间", DateUtils.parseDateToStr(PRINT_DATETIME_FORMAT, new Date())); + data.put("打印人", resolvePrintUserName()); + return data; + } + + private List> buildItineraryLoopData(CrmBusinessTripApplyVo apply) { + String tripTypeLabel = resolveTripTypeLabel(apply.getTripType()); + List details = apply.getCrmBusinessTripDetailsList(); + if (details != null && !details.isEmpty()) { + List> rows = new ArrayList<>(); + for (CrmBusinessTripDetailsVo detail : details) { + rows.add(toItineraryRow(apply, detail, tripTypeLabel)); + } + return rows; + } + return List.of(toItineraryRowFromApply(apply, tripTypeLabel)); + } + + private Map toItineraryRow(CrmBusinessTripApplyVo apply, CrmBusinessTripDetailsVo detail, + String tripTypeLabel) { + Map row = new HashMap<>(12); + Long order = detail.getItineraryNumber(); + row.put("itineraryLabel", order == null ? "行程明细" : "行程明细" + order); + row.put("tripType", tripTypeLabel); + row.put("tripLocation", strVal(detail.getTripLocation())); + row.put("projectName", strVal(detail.getProjectName())); + row.put("projectCode", strVal(detail.getProjectCode())); + row.put("tripReason", firstNonBlank(detail.getTripReason(), apply.getTripReason())); + row.put("startTime", formatDate(detail.getStartTime())); + row.put("endTime", formatDate(detail.getEndTime())); + row.put("durationText", formatDuration(detail.getDurationDays(), apply.getDurationDays())); + return row; + } + + private Map toItineraryRowFromApply(CrmBusinessTripApplyVo apply, String tripTypeLabel) { + Map row = new HashMap<>(12); + row.put("itineraryLabel", "行程明细1"); + row.put("tripType", tripTypeLabel); + row.put("tripLocation", strVal(apply.getTripLocation())); + row.put("projectName", strVal(apply.getProjectName())); + row.put("projectCode", strVal(apply.getProjectCode())); + row.put("tripReason", strVal(apply.getTripReason())); + row.put("startTime", formatDate(apply.getStartTime())); + row.put("endTime", formatDate(apply.getEndTime())); + row.put("durationText", formatDuration(apply.getDurationDays(), null)); + return row; + } + + private String buildApprovalFlowText(Long tripId) { + try { + Map flowData = remoteWorkflowService.flowHisTaskList(String.valueOf(tripId)); + List> handledTasks = extractHandledTasks(flowData == null ? null : flowData.get("list")); + if (handledTasks.isEmpty()) { + return ""; + } + return handledTasks.stream() + .map(this::formatApprovalFlowLine) + .filter(StringUtils::isNotBlank) + .collect(Collectors.joining("\n")); + } catch (Exception e) { + log.warn("读取出差申请审批记录失败, tripId={}", tripId, e); + return ""; + } + } + + private String formatApprovalFlowLine(Map task) { + String message = strVal(task.get("message")); + if (StringUtils.isBlank(message)) { + message = "同意"; + } + String approveName = resolveApproveName(task); + String statusLabel = resolveTaskStatusLabel(task); + String time = formatDateTime(parseDate(task.get("updateTime"))); + return message + " " + approveName + " " + statusLabel + " " + time; + } + + private String resolveTaskStatusLabel(Map task) { + String flowStatusName = strVal(task.get("flowStatusName")); + if (StringUtils.isNotBlank(flowStatusName)) { + return flowStatusName; + } + String nodeName = strVal(task.get("nodeName")); + if (nodeName.contains("抄送")) { + return "已抄送"; + } + return "已同意"; + } + + private String resolveTripTypeLabel(String tripType) { + if (StringUtils.isBlank(tripType)) { + return ""; + } + return TRIP_TYPE_LABELS.getOrDefault(tripType, tripType); + } + + private String formatDuration(Long detailDays, Long fallbackDays) { + Long days = detailDays != null ? detailDays : fallbackDays; + if (days == null) { + return ""; + } + return days + ".0天"; + } + + private String resolvePrintUserName() { + try { + if (LoginHelper.getLoginUser() != null && StringUtils.isNotBlank(LoginHelper.getLoginUser().getNickname())) { + return LoginHelper.getLoginUser().getNickname(); + } + } catch (Exception ignored) { + // ignore + } + return LoginHelper.getUsername(); + } + + private List> extractHandledTasks(Object listObj) { + if (!(listObj instanceof List taskList) || taskList.isEmpty()) { + return Collections.emptyList(); + } + List> handledTasks = new ArrayList<>(); + for (Object taskObj : taskList) { + Map taskMap = toMap(taskObj); + if (!taskMap.isEmpty() && taskMap.get("updateTime") != null) { + handledTasks.add(taskMap); + } + } + handledTasks.sort(Comparator.comparing(task -> { + Date updateTime = parseDate(task.get("updateTime")); + return updateTime == null ? new Date(0L) : updateTime; + })); + return handledTasks; + } + + private String resolveApproveName(Map task) { + String approveName = strVal(task.get("approveName")); + if (StringUtils.isNotBlank(approveName)) { + return approveName; + } + String approver = strVal(task.get("approver")); + if (StringUtils.isBlank(approver)) { + return ""; + } + try { + String nickname = remoteUserService.selectNicknameByIds(approver); + return StringUtils.isNotBlank(nickname) ? nickname : approver; + } catch (Exception e) { + log.warn("审批人昵称解析失败, approver={}", approver, e); + return approver; + } + } + + private Map toMap(Object obj) { + if (obj == null) { + return Collections.emptyMap(); + } + if (obj instanceof Map rawMap) { + Map result = new HashMap<>(rawMap.size()); + for (Map.Entry entry : rawMap.entrySet()) { + result.put(String.valueOf(entry.getKey()), entry.getValue()); + } + return result; + } + return BeanUtil.beanToMap(obj); + } + + private Date parseDate(Object rawDate) { + if (rawDate == null) { + return null; + } + if (rawDate instanceof Date date) { + return date; + } + if (rawDate instanceof Number number) { + long millis = number.longValue(); + if (String.valueOf(millis).length() == 10) { + millis = millis * 1000; + } + return new Date(millis); + } + return DateUtils.parseDate(rawDate); + } + + private String formatDate(Date date) { + if (date == null) { + return ""; + } + return DateUtils.parseDateToStr(DATE_FORMAT, date); + } + + private String formatDateTime(Date date) { + if (date == null) { + return ""; + } + return DateUtils.parseDateToStr(DATETIME_FORMAT, date); + } + + private String firstNonBlank(String primary, String fallback) { + if (StringUtils.isNotBlank(primary)) { + return primary; + } + return strVal(fallback); + } + + private String strVal(Object value) { + return value == null ? "" : String.valueOf(value); + } } diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/出差申请单模板.docx b/ruoyi-modules/ruoyi-oa/src/main/resources/出差申请单模板.docx new file mode 100644 index 0000000000000000000000000000000000000000..7447840e0b3d0a17d65e33022bb187881ef8168a GIT binary patch literal 39986 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 LFk#