package jnpf.dmsService;
|
|
import jnpf.dmsEntity.fenfa.vo.DmsWenjianHuishouMingxiVO;
|
import jnpf.dmsMapper.DmsWenjianFenfaMapper;
|
import jnpf.exception.DataException;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.TreeSet;
|
|
/** 回收及确认归档共用的副本准入;仅接受锁定后从数据库读取的记录。 */
|
public final class DmsWenjianHuishouPolicy {
|
private DmsWenjianHuishouPolicy() { }
|
|
public static void requireEligible(DmsWenjianHuishouMingxiVO record) throws DataException {
|
boolean earlyStatus = "daifafang".equals(record.getBizStatus())
|
|| "daiqianshou".equals(record.getBizStatus());
|
if (!"daihuishou".equals(record.getBizStatus())
|
&& !(earlyStatus && record.isEarlyRecycleEligible())) {
|
throw new DataException("文件副本尚未满足回收条件或已处理:" + record.getDayinLiushuihao());
|
}
|
}
|
|
/** 调用方先按ID锁副本并更新状态;随后锁打印任务,与追加打印/交接串行收尾。 */
|
public static void completeDistributions(DmsWenjianFenfaMapper mapper, String tenantId,
|
List<DmsWenjianHuishouMingxiVO> records, String userId, Date now) throws DataException {
|
TreeSet<String> taskIds = new TreeSet<>();
|
for (DmsWenjianHuishouMingxiVO record : records) {
|
if (!record.isEarlyRecycleEligible()) continue;
|
if (record.getDayinRenwuId() == null || record.getDayinRenwuId().trim().isEmpty())
|
throw new DataException("提前回收副本缺少原打印任务");
|
taskIds.add(record.getDayinRenwuId());
|
}
|
for (String taskId : taskIds) {
|
if (mapper.selectPrintTaskForUpdate(tenantId, taskId) == null)
|
throw new DataException("原打印任务不存在或已删除");
|
mapper.completeDistributionAfterRecycle(tenantId, taskId, userId, now);
|
}
|
}
|
}
|