|
@@ -1,9 +1,11 @@
|
|
|
package com.fjhx.common.service.documentary.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.common.constant.SourceConstant;
|
|
|
import com.fjhx.common.entity.documentary.bo.DocumentaryData;
|
|
|
import com.fjhx.common.entity.documentary.dto.DocumentaryRecordSelectDto;
|
|
|
import com.fjhx.common.entity.documentary.eums.DocumentaryTypeEnum;
|
|
@@ -19,8 +21,13 @@ import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
|
|
|
import com.fjhx.file.entity.FileInfoVo;
|
|
|
import com.fjhx.file.utils.ObsFileUtil;
|
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.security.core.context.SecurityContext;
|
|
|
+import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.context.request.RequestContextHolder;
|
|
|
+import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
@@ -61,24 +68,60 @@ public class DocumentaryRecordServiceImpl extends ServiceImpl<DocumentaryRecordM
|
|
|
|
|
|
// 获取跟单类型
|
|
|
DocumentaryTypeEnum typeEnum = DocumentaryTypeEnum.getEnum(dto.getType());
|
|
|
+ GetDocumentaryBusinessTemplate bean = typeEnum.getBusinessBean();
|
|
|
+
|
|
|
+ ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
|
|
+ SecurityContext context = SecurityContextHolder.getContext();
|
|
|
|
|
|
CompletableFuture<? extends Page<? extends DocumentaryData>> pageCompletableFuture =
|
|
|
CompletableFuture.supplyAsync(() -> {
|
|
|
- GetDocumentaryBusinessTemplate bean = typeEnum.getBusinessBean();
|
|
|
- Page<? extends DocumentaryData> page = bean.getDocumentaryPage(dto.getCondition(), dto);
|
|
|
+ // 设置子线程共享
|
|
|
+ RequestContextHolder.setRequestAttributes(servletRequestAttributes, true);
|
|
|
+ SecurityContextHolder.setContext(context);
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.COMMON);
|
|
|
+
|
|
|
+ List<Long> excludeBusinessId = null;
|
|
|
+ Long noRecordDocumentaryId = dto.getNoRecordDocumentaryId();
|
|
|
+ if (noRecordDocumentaryId != null) {
|
|
|
+ // 排除业务id
|
|
|
+ excludeBusinessId = listObject(DocumentaryRecord::getBusinessId,
|
|
|
+ q -> q.eq(DocumentaryRecord::getDocumentaryId, noRecordDocumentaryId));
|
|
|
+ }
|
|
|
+
|
|
|
+ Page<? extends DocumentaryData> page = bean.getDocumentaryPage(dto.getCondition(), dto, excludeBusinessId);
|
|
|
setDocumentaryRecord(page);
|
|
|
+
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
return page;
|
|
|
- }, threadPoolExecutor);
|
|
|
+ }, threadPoolExecutor).exceptionally(e -> {
|
|
|
+ if (e instanceof ServiceException) {
|
|
|
+ throw (ServiceException) e;
|
|
|
+ }
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ });
|
|
|
|
|
|
CompletableFuture<List<DocumentaryVo>> getDocumentaryListFuture =
|
|
|
CompletableFuture.supplyAsync(() -> {
|
|
|
+ // 设置子线程共享
|
|
|
+ RequestContextHolder.setRequestAttributes(servletRequestAttributes, true);
|
|
|
+ SecurityContextHolder.setContext(context);
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.COMMON);
|
|
|
+
|
|
|
List<DocumentaryVo> documentaryList = getDocumentaryList(typeEnum.getKey());
|
|
|
setDocumentaryRecordCount(documentaryList);
|
|
|
+
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
return documentaryList;
|
|
|
- }, threadPoolExecutor);
|
|
|
+ }, threadPoolExecutor).exceptionally(e -> {
|
|
|
+ if (e instanceof ServiceException) {
|
|
|
+ throw (ServiceException) e;
|
|
|
+ }
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ });
|
|
|
+
|
|
|
|
|
|
- List<DocumentaryVo> documentaryList = getDocumentaryListFuture.join();
|
|
|
Page<? extends DocumentaryData> documentaryDataPage = pageCompletableFuture.join();
|
|
|
+ List<DocumentaryVo> documentaryList = getDocumentaryListFuture.join();
|
|
|
|
|
|
DocumentaryRecordInfoVo vo = new DocumentaryRecordInfoVo();
|
|
|
vo.setDocumentaryList(documentaryList);
|