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 11:32:08 +08:00
parent 00d7d2ce0b
commit e5c13f6e30

View File

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