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());
|
}
|
}
|