From dd69bfc1fb8e5e28dde754fab7f23bfb1a18faa5 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 05 六月 2026 16:58:07 +0800
Subject: [PATCH] config(dev): 更新开发环境配置和文件上传功能 - 调整文件上传路径配置 - 修复OA环境文件链接前缀配置 - 在审批实例服务中添加报销相关数据删除逻辑 - 实现申请人姓名自动填充功能 - 添加文件下载预览路由的正则表达式支持 - 为企业新闻VO添加附件列表兼容别名 - 完善员工入职服务的异常处理 - 新增账户附件管理控制器 - 实现文件上传接口并返回完整文件信息
---
src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java | 46 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
index 3e710a8..0d9b5b4 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
@@ -11,7 +11,9 @@
import com.ruoyi.approve.bean.vo.ApprovalInstanceVo;
import com.ruoyi.approve.mapper.ApprovalInstanceMapper;
import com.ruoyi.approve.mapper.ApprovalTemplateNodeApproverMapper;
+import com.ruoyi.approve.mapper.FinReimbursementDetailMapper;
import com.ruoyi.approve.mapper.FinReimbursementMapper;
+import com.ruoyi.approve.mapper.FinReimbursementTravelMapper;
import com.ruoyi.approve.pojo.*;
import com.ruoyi.approve.service.*;
import com.ruoyi.approve.utils.ApproveProcessConfigNodeUtils;
@@ -25,6 +27,7 @@
import com.ruoyi.collaborativeApproval.pojo.EnterpriseNewsScopeDept;
import com.ruoyi.collaborativeApproval.pojo.EnterpriseNewsScopeUser;
import com.ruoyi.common.enums.*;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.security.LoginUser;
@@ -93,6 +96,8 @@
private final EnterpriseNewsMapper enterpriseNewsMapper;
private final EnterpriseNewsScopeDeptMapper enterpriseNewsScopeDeptMapper;
private final ApprovalTemplateNodeApproverMapper approvalTemplateNodeApproverMapper;
+ private final FinReimbursementDetailMapper finReimbursementDetailMapper;
+ private final FinReimbursementTravelMapper finReimbursementTravelMapper;
@Override
public R listPage(Page<ApprovalInstanceVo> page, ApprovalInstanceDto approvalInstanceDto) {
@@ -143,6 +148,13 @@
approvalInstanceDto.setInstanceNo(instanceNo);
approvalInstanceDto.setStatus("PENDING");
approvalInstanceDto.setCurrentLevel(1);
+ // 濡傛灉鍓嶇浼犱簡 applicantId 浣嗘病浼� applicantName锛屽垯浠庣敤鎴疯〃鏌ヨ濮撳悕
+ if (approvalInstanceDto.getApplicantId() != null && !StringUtils.hasText(approvalInstanceDto.getApplicantName())) {
+ SysUser applicantUser = sysUserMapper.selectUserById(approvalInstanceDto.getApplicantId());
+ if (applicantUser != null) {
+ approvalInstanceDto.setApplicantName(applicantUser.getNickName());
+ }
+ }
boolean saved = this.save(approvalInstanceDto);
if (!saved) {
return false;
@@ -159,6 +171,16 @@
if (approvalInstanceDto == null || approvalInstanceDto.getId() == null) {
return false;
}
+ // 鍒ゆ柇鏄惁鏈夋鍦ㄨ繘琛岀殑瀹℃壒浠诲姟锛屾湁鍒欎笉鍏佽淇敼
+ long pendingTaskCount = approvalTaskService.count(
+ Wrappers.<ApprovalTask>lambdaQuery()
+ .eq(ApprovalTask::getInstanceId, approvalInstanceDto.getId())
+ .eq(ApprovalTask::getTaskStatus, "PENDING")
+ .eq(ApprovalTask::getDeleted, 0)
+ );
+ if (pendingTaskCount > 0) {
+ throw new ServiceException("璇ュ鎵瑰崟鏈夋鍦ㄨ繘琛岀殑瀹℃壒浠诲姟锛屼笉鍏佽淇敼");
+ }
boolean updated = this.updateById(approvalInstanceDto);
if (!updated) {
return false;
@@ -173,6 +195,26 @@
if (ids == null || ids.isEmpty()) {
return false;
}
+
+ // 鍒犻櫎鍏宠仈鐨勪笟鍔℃暟鎹紙鎶ラ攢鍗曠瓑锛�
+ List<Long> reimbursementIds = new ArrayList<>();
+ List<ApprovalInstance> instances = approvalInstanceMapper.selectBatchIds(ids);
+ for (ApprovalInstance instance : instances) {
+ if (instance.getBusinessId() != null && instance.getBusinessType() != null) {
+ Long businessType = instance.getBusinessType();
+ if (TypeEnums.TRAVEL_REIMBURSEMENT_APPROVAL.getCode().equals(businessType)
+ || TypeEnums.EXPENSE_APPROVAL.getCode().equals(businessType)) {
+ reimbursementIds.add(instance.getBusinessId());
+ }
+ }
+ }
+ if (!reimbursementIds.isEmpty()) {
+ fileUtil.deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordIds(ApplicationTypeEnum.FILE, RecordTypeEnum.FIN_REIMBURSEMENT, reimbursementIds);
+ finReimbursementDetailMapper.delete(Wrappers.<FinReimbursementDetail>lambdaQuery().in(FinReimbursementDetail::getReimbursementId, reimbursementIds));
+ finReimbursementTravelMapper.delete(Wrappers.<FinReimbursementTravel>lambdaQuery().in(FinReimbursementTravel::getReimbursementId, reimbursementIds));
+ finReimbursementMapper.delete(Wrappers.<FinReimbursement>lambdaQuery().in(FinReimbursement::getId, reimbursementIds));
+ }
+
fileUtil.deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordIds(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVAL_INSTANCE, ids);
int instanceRows = approvalInstanceMapper.update(
@@ -629,7 +671,7 @@
String title = StringUtils.hasText(instance.getTemplateName()) ? instance.getTemplateName() : "瀹℃壒鎻愰啋";
String message = "瀹℃壒鍗曞彿 " + instance.getInstanceNo() + " 闇�瑕佹偍瀹℃壒";
- String jumpPath = "/approvalInstance?id=" + instance.getId();
+ String jumpPath = "/officeProcessAutomation/ApproveManage/approve-list?id=" + instance.getId();
sysNoticeService.simpleNoticeByUser(title, message, approverIds, jumpPath);
}
@@ -644,7 +686,7 @@
}
String title = "浼佷笟鏂伴椈";
String message = "鎮ㄦ湁鏂扮殑浼佷笟鏂伴椈銆�" + enterpriseNews.getTitle() + "銆嬭鍙婃椂鏌ラ槄";
- String jumpPath = "/enterpriseNews?id=" + newsId;
+ String jumpPath = "/officeProcessAutomation/EnterpriseNews?id=" + newsId;
sysNoticeService.simpleNoticeByUser(title, message, userIds, jumpPath);
}
--
Gitblit v1.9.3