package jnpf.limsService.impl;
|
|
import jnpf.database.util.TenantDataSourceUtil;
|
import jnpf.lims.api.model.TestWorkItemRequestIdentityActorRequest;
|
import jnpf.lims.api.model.TestWorkItemRequestIdentityBatch;
|
import jnpf.limsService.LimsTestWorkItemRequestIdentityActorService;
|
import jnpf.limsService.LimsTestWorkItemRequestIdentityService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.StringUtils;
|
|
@Service
|
public class LimsTestWorkItemRequestIdentityActorServiceImpl
|
implements LimsTestWorkItemRequestIdentityActorService {
|
|
private final LimsTestWorkItemRequestIdentityService identityService;
|
private final TenantRoute tenantRoute;
|
|
@Autowired
|
public LimsTestWorkItemRequestIdentityActorServiceImpl(
|
LimsTestWorkItemRequestIdentityService identityService) {
|
this(identityService, new TenantRoute() {
|
@Override public void switchTo(String tenantId) {
|
TenantDataSourceUtil.switchTenant(tenantId);
|
}
|
@Override public void clear() {
|
TenantDataSourceUtil.clearLocalTenantInfo();
|
}
|
});
|
}
|
|
LimsTestWorkItemRequestIdentityActorServiceImpl(
|
LimsTestWorkItemRequestIdentityService identityService, TenantRoute tenantRoute) {
|
this.identityService = identityService;
|
this.tenantRoute = tenantRoute;
|
}
|
|
@Override
|
public TestWorkItemRequestIdentityBatch resolve(
|
TestWorkItemRequestIdentityActorRequest actor) {
|
if (actor == null || !StringUtils.hasText(actor.getTenantId())) {
|
throw new IllegalArgumentException("内部检验项请验单身份租户不能为空");
|
}
|
String tenantId = actor.getTenantId().trim();
|
try {
|
tenantRoute.switchTo(tenantId);
|
return identityService.resolve(tenantId, actor.getRequest());
|
} finally {
|
tenantRoute.clear();
|
}
|
}
|
|
interface TenantRoute {
|
void switchTo(String tenantId);
|
void clear();
|
}
|
}
|