gaoluyang
3 天以前 23ec64ed997fc206fba9f0d6a84975f7b36c47be
src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java
@@ -13,6 +13,8 @@
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;
@@ -48,6 +50,7 @@
    private final ApprovalTemplateMapper approvalTemplateMapper;
    private final ApprovalTemplateNodeService approvalTemplateNodeService;
    private final ApprovalTemplateNodeApproverMapper approvalTemplateNodeApproverMapper;
    private final ApprovalInstanceMapper approvalInstanceMapper;
    private final FileUtil fileUtil;
    @Override
@@ -82,6 +85,17 @@
    @Override
    public Boolean updateApprovalTemplateDto(ApprovalTemplateDto approvalTemplateDto) {
        ApprovalTemplate existingTemplate = approvalTemplateMapper.selectById(approvalTemplateDto.getId());
        if (existingTemplate == null) {
            throw new IllegalArgumentException("模板不存在");
        }
        // 启用中的模板只能修改启用状态,其他项需先停用后再编辑
        if (existingTemplate.getEnabled() != null && existingTemplate.getEnabled() == 1) {
            ApprovalTemplate updateEntity = new ApprovalTemplate();
            updateEntity.setId(approvalTemplateDto.getId());
            updateEntity.setEnabled(approvalTemplateDto.getEnabled());
            return approvalTemplateMapper.updateById(updateEntity) > 0;
        }
        approvalTemplateMapper.updateById(approvalTemplateDto);
        approvalTemplateNodeService.remove(
                new LambdaQueryWrapper<ApprovalTemplateNode>()
@@ -111,6 +125,12 @@
    public Boolean delete(List<Long> ids) {
        if (ids == null || ids.isEmpty()) {
            return false;
        }
        // 检查模板是否被审批实例引用
        for (Long id : ids) {
            if (isTemplateReferenced(id)) {
                throw new RuntimeException("审批模板(ID: " + id + ")已被审批流程引用,无法删除");
            }
        }
        ApprovalTemplate updateEntity = new ApprovalTemplate();
        updateEntity.setDeleted(1);
@@ -275,4 +295,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;
    }
}