刘光辉
4 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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");
    }
}