package jnpf.dmsService.center;
|
|
import jnpf.dmsIntegration.audit.DmsVersionStateAuditRow;
|
import jnpf.dmsEntity.storage.entity.DmsFileObjectEntity;
|
import jnpf.dmsEntity.permission.entity.DmsFileVersionEntity;
|
import jnpf.dmsEntity.center.DmsCenterVersionSnapshot;
|
import jnpf.dmsEntity.storage.vo.DmsFileUploadVO;
|
import jnpf.dmsMapper.*;
|
import jnpf.exception.DataException;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import java.util.UUID;
|
|
/** Center reads. Business adapters must not join center tables in their mappers. */
|
@Service
|
@RequiredArgsConstructor
|
public class DmsCenterQueryService {
|
private final DmsFileVersionMapper versions;
|
private final DmsDocumentMapper documents;
|
private final DmsVersionStateMapper states;
|
private final DmsFileObjectMapper objects;
|
|
public DmsFileUploadVO registration(String tenantId, String serviceId, String sourceKey) {
|
return objects.selectUploadBySource(tenantId, serviceId, sourceKey);
|
}
|
|
public DmsCenterVersionSnapshot version(String tenantId, UUID versionId) {
|
DmsFileVersionEntity version = versions.selectByTenantAndId(tenantId, versionId);
|
if (version == null) return null;
|
DmsVersionStateAuditRow state = states.selectAuditState(tenantId, versionId);
|
DmsFileObjectEntity object = objects.selectByTenantAndFileVersionId(tenantId, versionId);
|
return new DmsCenterVersionSnapshot(version.getDocumentId(), version.getId(), version.getVersionLabel(), version.getChecksumSha256(),
|
version.getPreparedBy(), version.getPreparedOn(), object == null ? null : object.getId(),
|
state == null ? null : state.getLifecycleStatus(), state == null ? null : state.getEffectiveFrom(),
|
state == null ? null : state.getEffectiveTo());
|
}
|
|
public void requireUnusedReservation(String tenantId, UUID documentId, UUID versionId, boolean newDocument) {
|
if (versions.selectByTenantAndId(tenantId, versionId) != null
|
|| (newDocument && documents.selectByTenantAndId(tenantId, documentId) != null))
|
throw new DataException("旧登记ID已被使用,不能自动替换预留ID");
|
}
|
}
|