fix: ignore empty loading links during completion

This commit is contained in:
2026-09-16 11:33:16 +08:00
parent a975b07968
commit 011aa80870
3 changed files with 63 additions and 9 deletions
@@ -193,24 +193,24 @@ public class LoadingModelBridgeService {
}
public void requireStarted(long tenantId, long inboundId) {
List<Link> links = requireLinks(tenantId, inboundId);
if (links.stream().anyMatch(link -> link.allocatedPackageCount() == null || link.allocatedPackageCount() <= 0
|| !Set.of("LOADING", "COMPLETED").contains(link.loadingPlanStatus()))) {
List<Link> links = requireAllocatedLinks(tenantId, inboundId);
if (links.stream().anyMatch(link -> !Set.of("LOADING", "COMPLETED").contains(link.loadingPlanStatus()))) {
throw conflict("关联柜次尚未全部开始装柜");
}
}
public void requireCompleted(long tenantId, long inboundId) {
List<Link> links = requireLinks(tenantId, inboundId);
if (links.stream().anyMatch(link -> link.allocatedPackageCount() == null || link.allocatedPackageCount() <= 0
|| !"COMPLETED".equals(link.loadingPlanStatus()))) {
List<Link> links = requireAllocatedLinks(tenantId, inboundId);
if (links.stream().anyMatch(link -> !"COMPLETED".equals(link.loadingPlanStatus()))) {
throw conflict("关联柜次尚未全部完成装柜");
}
}
private List<Link> requireLinks(long tenantId, long inboundId) {
List<Link> links = repository.byInbound(tenantId, inboundId);
if (links.isEmpty()) throw conflict("入库单尚未关联柜次装柜计划");
private List<Link> requireAllocatedLinks(long tenantId, long inboundId) {
List<Link> links = repository.byInbound(tenantId, inboundId).stream()
.filter(link -> link.allocatedPackageCount() != null && link.allocatedPackageCount() > 0)
.toList();
if (links.isEmpty()) throw conflict("入库单尚未关联有效柜次装柜计划");
return links;
}