package jnpf.dmsService;
|
|
import jnpf.base.Pagination;
|
import jnpf.base.UserInfo;
|
import jnpf.dmsEntity.fenfa.model.DmsWenjianDayinTaizhangQuery;
|
import jnpf.dmsMapper.DmsWenjianDayinTaizhangMapper;
|
import jnpf.dmsPermission.DmsCurrentIdentity;
|
import jnpf.dmsPermission.DmsPermissionError;
|
import jnpf.dmsPermission.DmsPermissionException;
|
import jnpf.util.JsonUtil;
|
import jnpf.flowable.enums.TaskStatusEnum;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Isolation;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Collections;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.UUID;
|
|
/** 原生待打印视图的数据源;使用与用户授权目录树相同的主体解析。 */
|
@Service
|
@RequiredArgsConstructor
|
public class DmsWenjianDayinTaizhangService {
|
private final DmsCurrentIdentity identity;
|
private final DmsUserFolderPermissionTreeService folderPermissions;
|
private final DmsWenjianDayinTaizhangMapper mapper;
|
|
@Transactional(readOnly = true, isolation = Isolation.REPEATABLE_READ)
|
public List<Map<String, Object>> list(Pagination pagination, String search, String showKey, String showValue) {
|
if (pagination == null || pagination.getCurrentPage() < 1 || pagination.getPageSize() < 1
|
|| pagination.getPageSize() > 99999999L) {
|
throw invalid("分页参数无效");
|
}
|
String taskId = null;
|
if (showKey != null || showValue != null) {
|
if (!("f_id".equals(showKey) || "id".equals(showKey)) || showValue == null || showValue.trim().isEmpty()) {
|
throw invalid("台账回显必须指定 f_id 或 id 及任务ID");
|
}
|
taskId = showValue.trim();
|
}
|
long offset;
|
try {
|
offset = Math.multiplyExact(pagination.getCurrentPage() - 1L, pagination.getPageSize());
|
} catch (ArithmeticException e) {
|
throw invalid("分页范围无效");
|
}
|
UserInfo actor = identity.requireUser();
|
String tenantId = identity.tenantId(actor);
|
List<UUID> folderIds = folderPermissions.currentUserPrintFolderIds();
|
List<UUID> workflowVersionIds = folderPermissions.currentUserWorkflowPrintVersionIds();
|
if (folderIds.isEmpty() && workflowVersionIds.isEmpty()) {
|
pagination.setTotal(0);
|
return Collections.emptyList();
|
}
|
DmsWenjianDayinTaizhangQuery query = new DmsWenjianDayinTaizhangQuery();
|
query.setTenantId(tenantId);
|
query.setFolderIdsJson(JsonUtil.getObjectToString(folderIds));
|
query.setWorkflowPrintVersionIdsJson(JsonUtil.getObjectToString(workflowVersionIds));
|
query.setUserId(actor.getUserId().trim());
|
query.setApprovedFlowState(TaskStatusEnum.PASSED.getCode());
|
query.setSearch(search);
|
query.setTaskId(taskId);
|
query.setOffset(offset);
|
query.setLimit(pagination.getPageSize());
|
long total = ((Number) mapper.selectCount(query).get("total")).longValue();
|
pagination.setTotal(total);
|
return total <= offset ? Collections.emptyList() : mapper.selectPage(query);
|
}
|
|
private DmsPermissionException invalid(String message) {
|
return DmsPermissionException.of(DmsPermissionError.INVALID_REQUEST, message);
|
}
|
}
|