Skip to content

Commit 7d57f4a

Browse files
committed
fix: approval flow delete
1 parent 37ad19d commit 7d57f4a

2 files changed

Lines changed: 23 additions & 12 deletions

File tree

backend/crm/src/main/java/cn/cordys/crm/approval/service/ApprovalFlowService.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ public class ApprovalFlowService {
101101
private UserViewService userViewService;
102102
@Resource
103103
private ExtApprovalInstanceMapper extApprovalInstanceMapper;
104+
@Resource
105+
private ApprovalInstanceService approvalInstanceService;
104106

105107
/**
106108
* 根据表单类型获取审批流状态权限配置
@@ -517,6 +519,9 @@ public void delete(String id, String organizationId) {
517519
// 删除主表
518520
approvalFlowMapper.deleteByPrimaryKey(id);
519521

522+
// 清除审批中的资源和待办
523+
approvalInstanceService.clearApprovingInstanceOfFlow(id);
524+
520525
// 设置日志上下文
521526
OperationLogContext.setResourceName(flow.getName());
522527
}
@@ -1113,10 +1118,14 @@ private boolean matchSingleCondition(FilterCondition condition, Map<String, Obje
11131118
String fieldName = condition.getName();
11141119
Object actualValue = fieldValueMap.get(fieldName);
11151120

1121+
// 获取动态转换后的值和操作符
1122+
Object expectedValue = condition.getCombineValue();
1123+
String operatorStr = condition.getCombineOperator();
1124+
11161125
// 获取操作符枚举
11171126
FilterCondition.CombineConditionOperator operator;
11181127
try {
1119-
operator = FilterCondition.CombineConditionOperator.valueOf(condition.getOperator());
1128+
operator = FilterCondition.CombineConditionOperator.valueOf(operatorStr);
11201129
} catch (IllegalArgumentException e) {
11211130
return false;
11221131
}
@@ -1133,8 +1142,6 @@ private boolean matchSingleCondition(FilterCondition condition, Map<String, Obje
11331142
return false;
11341143
}
11351144

1136-
Object expectedValue = condition.getValue();
1137-
11381145
try {
11391146
return switch (operator) {
11401147
case EQUALS -> matchEquals(actualValue, expectedValue);

backend/crm/src/main/java/cn/cordys/crm/approval/service/ApprovalInstanceService.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -340,14 +340,18 @@ public void clearApprovingInstanceOfFlow(String flowId) {
340340
List<String> instanceIds = instances.stream().map(ApprovalInstance::getId).toList();
341341
List<ApprovalTask> approvalTasks = approvalTaskMapper.selectListByLambda(new LambdaQueryWrapper<ApprovalTask>().in(ApprovalTask::getInstanceId, instanceIds));
342342
List<String> taskIds = approvalTasks.stream().map(ApprovalTask::getId).toList();
343-
approvalTaskMapper.deleteByIds(taskIds);
344-
approvalAddSignTaskMapper.deleteByLambda(new LambdaQueryWrapper<ApprovalAddSignTask>().in(ApprovalAddSignTask::getTaskId, taskIds));
345-
approvalReturnBackRecordMapper.deleteByLambda(new LambdaQueryWrapper<ApprovalReturnBackRecord>().in(ApprovalReturnBackRecord::getTaskId, taskIds));
346-
approvalRecordMapper.deleteByLambda(new LambdaQueryWrapper<ApprovalRecord>().in(ApprovalRecord::getInstanceId, instanceIds));
347-
List<ApprovalInstanceAttachment> instanceAttachments = approvalInstanceAttachmentMapper.selectListByLambda(new LambdaQueryWrapper<ApprovalInstanceAttachment>().in(ApprovalInstanceAttachment::getInstanceId, instanceIds));
348-
approvalInstanceAttachmentMapper.deleteByIds(instanceAttachments.stream().map(ApprovalInstanceAttachment::getId).toList());
349-
List<String> attachmentIds = instanceAttachments.stream().map(ApprovalInstanceAttachment::getAttachmentId).toList();
350-
attachmentIds.forEach(id -> attachmentService.delete(id));
351-
attachmentMapper.deleteByIds(attachmentIds);
343+
if (CollectionUtils.isNotEmpty(taskIds)) {
344+
approvalTaskMapper.deleteByIds(taskIds);
345+
approvalAddSignTaskMapper.deleteByLambda(new LambdaQueryWrapper<ApprovalAddSignTask>().in(ApprovalAddSignTask::getTaskId, taskIds));
346+
approvalReturnBackRecordMapper.deleteByLambda(new LambdaQueryWrapper<ApprovalReturnBackRecord>().in(ApprovalReturnBackRecord::getTaskId, taskIds));
347+
}
348+
if (CollectionUtils.isNotEmpty(taskIds)) {
349+
approvalRecordMapper.deleteByLambda(new LambdaQueryWrapper<ApprovalRecord>().in(ApprovalRecord::getInstanceId, instanceIds));
350+
List<ApprovalInstanceAttachment> instanceAttachments = approvalInstanceAttachmentMapper.selectListByLambda(new LambdaQueryWrapper<ApprovalInstanceAttachment>().in(ApprovalInstanceAttachment::getInstanceId, instanceIds));
351+
approvalInstanceAttachmentMapper.deleteByIds(instanceAttachments.stream().map(ApprovalInstanceAttachment::getId).toList());
352+
List<String> attachmentIds = instanceAttachments.stream().map(ApprovalInstanceAttachment::getAttachmentId).toList();
353+
attachmentIds.forEach(id -> attachmentService.delete(id));
354+
attachmentMapper.deleteByIds(attachmentIds);
355+
}
352356
}
353357
}

0 commit comments

Comments
 (0)