From de0bf07d8497ec97750de8adabd6a30146fe9557 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 01 七月 2026 11:32:26 +0800
Subject: [PATCH] fix:1.发货审批不通过时,对应的发货车牌应不展示2.审批模版被其他审批引用时,不能进行编辑或删除操作
---
src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 58 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java
index db1f378..9a5f0b8 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java
@@ -13,15 +13,22 @@
import com.ruoyi.approve.bean.vo.ApprovalTemplateVo;
import com.ruoyi.approve.mapper.ApprovalTemplateMapper;
import com.ruoyi.approve.mapper.ApprovalTemplateNodeApproverMapper;
+import com.ruoyi.approve.mapper.ApprovalInstanceMapper;
+import com.ruoyi.approve.pojo.ApprovalInstance;
import com.ruoyi.approve.pojo.ApprovalTemplate;
import com.ruoyi.approve.pojo.ApprovalTemplateNode;
import com.ruoyi.approve.pojo.ApprovalTemplateNodeApprover;
import com.ruoyi.approve.service.ApprovalTemplateNodeService;
import com.ruoyi.approve.service.ApprovalTemplateService;
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.utils.FileUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
import java.util.Collections;
import java.util.Comparator;
@@ -43,6 +50,8 @@
private final ApprovalTemplateMapper approvalTemplateMapper;
private final ApprovalTemplateNodeService approvalTemplateNodeService;
private final ApprovalTemplateNodeApproverMapper approvalTemplateNodeApproverMapper;
+ private final ApprovalInstanceMapper approvalInstanceMapper;
+ private final FileUtil fileUtil;
@Override
public IPage<ApprovalTemplateVo> listPage(Page<ApprovalTemplateVo> page, ApprovalTemplateDto approvalTemplateDto) {
@@ -63,6 +72,11 @@
new LambdaQueryWrapper<ApprovalTemplateNodeApprover>()
.eq(ApprovalTemplateNodeApprover::getTemplateId, approvalTemplateDto.getId())
);
+ // 淇濆瓨闄勪欢
+ List<StorageBlobDTO> storageBlobDTOs = approvalTemplateDto.getStorageBlobDTOs();
+ if (!CollectionUtils.isEmpty(storageBlobDTOs)) {
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVAL_TEMPLATE, approvalTemplateDto.getId(), storageBlobDTOs);
+ }
return approvalTemplateNodeService.saveApprovalTemplateNode(
approvalTemplateDto.getId(),
approvalTemplateDto.getNodes()
@@ -71,6 +85,10 @@
@Override
public Boolean updateApprovalTemplateDto(ApprovalTemplateDto approvalTemplateDto) {
+ // 妫�鏌ユā鏉挎槸鍚﹁瀹℃壒瀹炰緥寮曠敤
+ if (isTemplateReferenced(approvalTemplateDto.getId())) {
+ throw new RuntimeException("璇ュ鎵规ā鏉垮凡琚鎵规祦绋嬪紩鐢紝鏃犳硶缂栬緫");
+ }
approvalTemplateMapper.updateById(approvalTemplateDto);
approvalTemplateNodeService.remove(
new LambdaQueryWrapper<ApprovalTemplateNode>()
@@ -80,6 +98,16 @@
new LambdaQueryWrapper<ApprovalTemplateNodeApprover>()
.eq(ApprovalTemplateNodeApprover::getTemplateId, approvalTemplateDto.getId())
);
+ // 淇濆瓨闄勪欢锛堜細鍏堝垹闄ゆ棫闄勪欢锛�
+ List<StorageBlobDTO> storageBlobDTOs = approvalTemplateDto.getStorageBlobDTOs();
+ if (!CollectionUtils.isEmpty(storageBlobDTOs)) {
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVAL_TEMPLATE, approvalTemplateDto.getId(), storageBlobDTOs);
+ } else {
+ // 濡傛灉鍓嶇浼犵┖鏁扮粍锛屽垹闄ゆ棫闄勪欢
+ fileUtil.deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(
+ ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVAL_TEMPLATE, approvalTemplateDto.getId()
+ );
+ }
return approvalTemplateNodeService.saveApprovalTemplateNode(
approvalTemplateDto.getId(),
approvalTemplateDto.getNodes()
@@ -90,6 +118,12 @@
public Boolean delete(List<Long> ids) {
if (ids == null || ids.isEmpty()) {
return false;
+ }
+ // 妫�鏌ユā鏉挎槸鍚﹁瀹℃壒瀹炰緥寮曠敤
+ for (Long id : ids) {
+ if (isTemplateReferenced(id)) {
+ throw new RuntimeException("瀹℃壒妯℃澘锛圛D: " + id + "锛夊凡琚鎵规祦绋嬪紩鐢紝鏃犳硶鍒犻櫎");
+ }
}
ApprovalTemplate updateEntity = new ApprovalTemplate();
updateEntity.setDeleted(1);
@@ -107,7 +141,7 @@
new LambdaQueryWrapper<ApprovalTemplate>()
.eq(ApprovalTemplate::getDeleted, 0)
.eq(ApprovalTemplate::getEnabled, 1)
- .eq(type != null, ApprovalTemplate::getTemplateType, type)
+ .notIn(ApprovalTemplate::getBusinessType, List.of(5L, 6L, 7L))
.orderByDesc(ApprovalTemplate::getTemplateType)
.orderByDesc(ApprovalTemplate::getId)
);
@@ -221,6 +255,12 @@
.collect(Collectors.toList());
templateVo.setNodes(nodeVos);
+ // 鏌ヨ闄勪欢
+ templateVo.setStorageBlobDTOs(
+ fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(
+ ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVAL_TEMPLATE, template.getId()
+ )
+ );
return templateVo;
}
@@ -248,4 +288,21 @@
BeanUtils.copyProperties(approver, approverVo);
return approverVo;
}
+
+ /**
+ * 妫�鏌ュ鎵规ā鏉挎槸鍚﹁瀹℃壒瀹炰緥寮曠敤
+ * @param templateId 妯℃澘ID
+ * @return true 琛ㄧず琚紩鐢紝false 琛ㄧず鏈寮曠敤
+ */
+ private boolean isTemplateReferenced(Long templateId) {
+ if (templateId == null) {
+ return false;
+ }
+ Long count = approvalInstanceMapper.selectCount(
+ new LambdaQueryWrapper<ApprovalInstance>()
+ .eq(ApprovalInstance::getTemplateId, templateId)
+ .eq(ApprovalInstance::getDeleted, 0)
+ );
+ return count != null && count > 0;
+ }
}
--
Gitblit v1.9.3