package jnpf.dmsService;
|
|
import jnpf.base.ActionResult;
|
import jnpf.base.ActionResultCode;
|
import jnpf.dmsEntity.preview.enums.DmsPreviewFormat;
|
import jnpf.dmsEntity.preview.enums.DmsWatermarkTargetType;
|
import jnpf.dmsEntity.preview.model.DmsFilePreviewTicket;
|
import jnpf.dmsService.file.DmsOnlyOfficePrepareApi;
|
import jnpf.exception.DataException;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Component;
|
|
@Component
|
@RequiredArgsConstructor
|
public class DmsPreviewPreparationClient {
|
private final DmsOnlyOfficePrepareApi prepareApi;
|
|
public DmsFilePreviewTicket prepare(DmsFilePreviewTicket ticket) {
|
DmsWatermarkTargetType targetType = DmsWatermarkTargetType.from(
|
ticket.getFileName(), ticket.getMimeType());
|
if (targetType == DmsWatermarkTargetType.IMAGE) {
|
return ticket;
|
}
|
boolean customBarcode = ticket.getWatermarks() != null && ticket.getWatermarks().stream()
|
.anyMatch(mark -> mark != null && Boolean.TRUE.equals(mark.getCustomBarcode()));
|
boolean pdfRequested = DmsPreviewFormat.PDF == ticket.getPreviewFormat();
|
boolean docxCustomBarcode = customBarcode
|
&& targetType == DmsWatermarkTargetType.DOCX;
|
if ((!pdfRequested && !docxCustomBarcode) || targetType == DmsWatermarkTargetType.PDF) {
|
return ticket;
|
}
|
ActionResult<DmsFilePreviewTicket> result = prepareApi.prepare(ticket);
|
if (result == null || !ActionResultCode.SUCCESS.getCode().equals(result.getCode())
|
|| result.getData() == null) {
|
throw new DataException(result == null || result.getMsg() == null
|
? "预览 PDF 生成失败" : result.getMsg());
|
}
|
return result.getData();
|
}
|
|
}
|