刘光辉
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
44
45
46
47
48
49
50
package jnpf.dmsService;
 
import jnpf.dmsEntity.center.DmsCenterVersionSnapshot;
import jnpf.dmsEntity.banben.DmsWenjianBanbenJiesuanModel;
import jnpf.dmsEntity.storage.approval.DmsApprovedItem;
import jnpf.dmsMapper.DmsApprovedBatchMapper;
import jnpf.dmsMapper.DmsApprovedMetadataMapper;
import jnpf.exception.DataException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
 
@Component
@RequiredArgsConstructor
public class DmsApprovedFileProjection {
    private final DmsApprovedBatchMapper receipts;
    private final jnpf.dmsService.center.DmsCenterQueryService center;
    private final DmsApprovedMetadataMapper metadata;
 
    public void enrich(DmsWenjianBanbenJiesuanModel model) {
        DmsApprovedItem item = receipts.item(model.getTenantId(), model.getLaiyuanYewuJian());
        if (item == null) throw new DataException("未找到完整的批准文件接收回执");
        DmsCenterVersionSnapshot version = center.version(model.getTenantId(), item.getFileVersionId());
        if (version == null || !"EFFECTIVE".equals(version.lifecycleStatus()) || version.effectiveFrom() == null)
            throw new DataException("文件中心版本尚未生效,不能回写正式业务版本");
        if (!item.getDocumentId().equals(version.documentId()))
            throw new DataException("批准回执与中心版本所属文件不一致");
        DmsWenjianBanbenJiesuanModel source = metadata.selectSource(model.getTenantId(),
                model.getLaiyuanDanjuLeixing(), model.getLaiyuanDanjuId(), model.getLaiyuanZixiangId());
        if (source == null || version.fileObjectId() == null)
            throw new DataException("批准文件缺少原生来源或正式文件对象,不能回写资源");
        if (!"yes".equals(item.getShifouShoukong()) && !"no".equals(item.getShifouShoukong()))
            throw new DataException("推送任务缺少是否受控快照,不能回写资源");
        if ((item.getSourceKey().endsWith(":zhuwenjian")
                || item.getSourceKey().endsWith(":wailaiWenjian")) && !"yes".equals(item.getShifouShoukong()))
            throw new DataException("主文件推送任务的是否受控必须为yes");
        model.setShifouShoukong(item.getShifouShoukong());
        model.setBianhaoShiyongRenId(source.getBianhaoShiyongRenId());
        model.setZhidingrenBumenId(source.getZhidingrenBumenId());
        model.setShenheLiuchengId(source.getShenheLiuchengId());
        model.setShenheLiuchengRenwuId(source.getShenheLiuchengRenwuId());
        model.setWenjianDuixiangId(version.fileObjectId().toString());
        model.setZhidingRenId(version.preparedBy());
        model.setZhidingRiqi(version.preparedOn() == null ? null : java.sql.Date.valueOf(version.preparedOn()));
        model.setCenterDocumentId(item.getDocumentId().toString());
        model.setCenterVersionId(item.getFileVersionId().toString());
        model.setCenterVersionLabel(version.versionLabel());
        model.setEffectiveAt(version.effectiveFrom());
        model.setEffectiveTo(version.effectiveTo());
    }
}