|
@@ -13,6 +13,7 @@ import com.fjhx.file.utils.ObsFileUtil;
|
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
+import com.ruoyi.framework.config.ThreadPoolConfig;
|
|
|
import com.sd.business.entity.department.po.Department;
|
|
|
import com.sd.business.entity.order.po.OrderInfo;
|
|
|
import com.sd.business.entity.order.po.OrderSku;
|
|
@@ -34,11 +35,16 @@ import com.sd.business.service.statement.StatementOfAccountService;
|
|
|
import com.sd.business.util.CodeEnum;
|
|
|
import com.sd.framework.util.Assert;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
+import org.springframework.security.core.context.SecurityContext;
|
|
|
+import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
|
+import java.util.concurrent.ThreadPoolExecutor;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -75,6 +81,10 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
|
|
|
@Autowired
|
|
|
private StatementOfAccountExportService statementOfAccountExportService;
|
|
|
|
|
|
+ @Qualifier(ThreadPoolConfig.threadPoolTaskExecutor)
|
|
|
+ @Autowired
|
|
|
+ private ThreadPoolExecutor threadPoolExecutor;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<StatementOfAccountVo> getPage(StatementOfAccountSelectDto dto) {
|
|
|
|
|
@@ -400,15 +410,30 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
|
|
|
List<Long> orderIdList = orderList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIdList));
|
|
|
|
|
|
- // 获取订单sku
|
|
|
- List<DocumentByOrderVo.SkuSpec> skuSpecList = getSkuSpecList(orderSkuList);
|
|
|
+ SecurityContext context = SecurityContextHolder.getContext();
|
|
|
+
|
|
|
+ CompletableFuture<List<DocumentByOrderVo.SkuSpec>> skuSpecListCompletableFuture = CompletableFuture.supplyAsync(
|
|
|
+ () -> {
|
|
|
+ SecurityContextHolder.setContext(context);
|
|
|
+ return getSkuSpecList(orderSkuList);
|
|
|
+ }, threadPoolExecutor);
|
|
|
+
|
|
|
+ CompletableFuture<List<DocumentByOrderVo.BomSpec>> bomSpecListCompletableFuture = CompletableFuture.supplyAsync(
|
|
|
+ () -> {
|
|
|
+ SecurityContextHolder.setContext(context);
|
|
|
+ return getBomSpecList(orderIdList, orderSkuList);
|
|
|
+ }, threadPoolExecutor);
|
|
|
|
|
|
// 获取订单bom
|
|
|
- List<DocumentByOrderVo.BomSpec> bomSpecList = getBomSpecList(orderIdList, orderSkuList);
|
|
|
+ List<DocumentByOrderVo.BomSpec> bomSpecList = bomSpecListCompletableFuture.join();
|
|
|
|
|
|
// sku赋值bom
|
|
|
Map<Long, List<DocumentByOrderVo.BomSpec>> bomSpecMap = bomSpecList.stream()
|
|
|
.collect(Collectors.groupingBy(DocumentByOrderVo.BomSpec::getOrderSkuId));
|
|
|
+
|
|
|
+ // 获取订单sku
|
|
|
+ List<DocumentByOrderVo.SkuSpec> skuSpecList = skuSpecListCompletableFuture.join();
|
|
|
+
|
|
|
for (DocumentByOrderVo.SkuSpec skuSpec : skuSpecList) {
|
|
|
skuSpec.setBomSpecList(bomSpecMap.getOrDefault(skuSpec.getOrderSkuId(), Collections.emptyList()));
|
|
|
}
|