package jnpf.dmsService;
|
|
import jnpf.dmsEntity.fenfa.DmsWenjianChongdaFasong;
|
import jnpf.dmsEntity.fenfa.form.DmsWenjianChongdaForm;
|
import jnpf.exception.DataException;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import java.util.UUID;
|
import java.io.IOException;
|
|
/** 转换/计页在副本事务之外执行,避免长时间占用记录锁。 */
|
@Service
|
@RequiredArgsConstructor
|
public class DmsWenjianChongdaPlanService {
|
private final DmsWenjianChongdaService reprints;
|
private final DmsFilePageCountService pageCounts;
|
|
public DmsWenjianChongdaFasong plan(DmsWenjianChongdaForm form) throws DataException {
|
var attempt = reprints.status(form);
|
if (!"OPEN".equals(attempt.getState()) || attempt.getPageCount() != null) return attempt;
|
try {
|
var counted = pageCounts.getPageCount(UUID.fromString(attempt.getFileVersionId()));
|
if (counted == null || !UUID.fromString(attempt.getFileVersionId()).equals(counted.getFileVersionId()))
|
throw new DataException("文件完整页数查询结果不匹配");
|
return reprints.plan(form, attempt.getFileVersionId(), counted.getPageCount());
|
} catch (IOException e) {
|
throw new DataException("文件完整页数读取失败,请稍后恢复原任务");
|
}
|
}
|
}
|