Fix Bug #571: 修复检验申请撤回操作状态校验逻辑不一致

根因:SQL查询使用EXISTS判断(任一ServiceRequest为ACTIVE即显示已签发),
但后端撤回校验使用allMatch(要求所有ServiceRequest均为ACTIVE)。
当多项申请单中部分为待签发时,前端显示已签发但后端拒绝撤回,导致报错。

修复:将allMatch改为anyMatch,与SQL的EXISTS逻辑保持一致。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-22 10:58:27 +08:00
parent 4c462e00db
commit 03e47be0d8

View File

@@ -640,10 +640,10 @@ public class RequestFormManageAppServiceImpl implements IRequestFormManageAppSer
return R.fail("标本已采集,无法撤回");
}
// 校验:有已签发(status=2)的申请单可撤回
boolean allActive = serviceRequests.stream()
.allMatch(sr -> RequestStatus.ACTIVE.getValue().equals(sr.getStatusEnum()));
if (!allActive) {
// 校验:有已签发(status=2)的医嘱可撤回与SQL的EXISTS逻辑一致允许多项申请单中部分为待签发
boolean hasActive = serviceRequests.stream()
.anyMatch(sr -> RequestStatus.ACTIVE.getValue().equals(sr.getStatusEnum()));
if (!hasActive) {
return R.fail("只有已签发且未采证的申请单可撤回");
}