fix
This commit is contained in:
@@ -6,20 +6,45 @@ import org.springframework.context.annotation.Configuration;
|
||||
import javax.annotation.PreDestroy;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Configuration
|
||||
public class ExecutorConfig {
|
||||
|
||||
private ExecutorService executorService;
|
||||
|
||||
// @Bean
|
||||
// public ExecutorService executorService() {
|
||||
// ExecutorService executorService = Executors.newFixedThreadPool(12);
|
||||
// return executorService;
|
||||
// }
|
||||
|
||||
// @PreDestroy
|
||||
// public void shutdown() {
|
||||
// executorService.shutdown(); // 不立即停止所有任务,但不再接受新任务
|
||||
// }
|
||||
|
||||
@Bean
|
||||
public ExecutorService executorService() {
|
||||
ExecutorService executorService = Executors.newFixedThreadPool(12);
|
||||
return executorService;
|
||||
// 考虑根据实际情况调整线程池大小
|
||||
int threadPoolSize = Runtime.getRuntime().availableProcessors() * 2;
|
||||
return Executors.newFixedThreadPool(threadPoolSize);
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
public void shutdown() {
|
||||
executorService.shutdown(); // 不立即停止所有任务,但不再接受新任务
|
||||
if (executorService != null) {
|
||||
// 尝试更彻底地关闭线程池
|
||||
executorService.shutdownNow(); // 阻止新任务提交并尝试停止当前正在执行的任务
|
||||
try {
|
||||
// 等待所有任务完成或等待一段时间
|
||||
if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
|
||||
System.err.println("Pool did not terminate");
|
||||
}
|
||||
} catch (InterruptedException ie) {
|
||||
Thread.currentThread().interrupt(); // 重新设置中断状态
|
||||
System.err.println("Thread interrupted while waiting for the executor service to terminate.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,20 +69,11 @@ public class CarReservationInfoServiceImpl extends ServiceImpl<CarReservationInf
|
||||
public BusinessAnalysisVo getStatistic(BusinessAnalysisRequest request) {
|
||||
BusinessAnalysisVo vo = new BusinessAnalysisVo();
|
||||
//当前
|
||||
CompletableFuture<BigDecimal> current = CompletableFuture.supplyAsync(() -> {
|
||||
BigDecimal sumPrice = getSumPrice(request.getDateLimit(), request.getMerId(), null);
|
||||
return sumPrice;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> current = calculatePrice(request, null);
|
||||
//上一年
|
||||
CompletableFuture<BigDecimal> year = CompletableFuture.supplyAsync(() -> {
|
||||
BigDecimal sumPrice = getSumPrice(request.getDateLimit(), request.getMerId(), DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
return sumPrice;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> year = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
//上一月
|
||||
CompletableFuture<BigDecimal> month = CompletableFuture.supplyAsync(() -> {
|
||||
BigDecimal sumPrice = getSumPrice(request.getDateLimit(), request.getMerId(), DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
return sumPrice;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> month = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
|
||||
CompletableFuture.allOf(current, year, month).join();
|
||||
try {
|
||||
@@ -97,6 +88,10 @@ public class CarReservationInfoServiceImpl extends ServiceImpl<CarReservationInf
|
||||
return vo;
|
||||
}
|
||||
|
||||
private CompletableFuture<BigDecimal> calculatePrice(BusinessAnalysisRequest request, String dateOffset) {
|
||||
return CompletableFuture.supplyAsync(() -> getSumPrice(request.getDateLimit(), request.getMerId(), dateOffset), service);
|
||||
}
|
||||
|
||||
private BigDecimal getSumPrice(String dateLimit, Integer merId, String type) {
|
||||
QueryWrapper<CarReservationInfo> lqw = new QueryWrapper<>();
|
||||
lqw.select("IFNULL(SUM( CASE WHEN new_accessory_over_price IS NOT NULL AND new_accessory_over_price <> 0 THEN new_accessory_over_price ELSE accessory_over_price END " +
|
||||
|
||||
@@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.*;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.ReUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
@@ -42,9 +45,9 @@ import com.zbkj.common.request.car.*;
|
||||
import com.zbkj.common.response.accessory.AccessoryStorageInResponse;
|
||||
import com.zbkj.common.response.car.*;
|
||||
import com.zbkj.common.result.CommonResultCode;
|
||||
import com.zbkj.common.utils.JsonUtils;
|
||||
import com.zbkj.common.utils.LxkDateUtil;
|
||||
import com.zbkj.common.utils.LxkUtil;
|
||||
import com.zbkj.common.utils.JsonUtils;
|
||||
import com.zbkj.common.utils.RedisUtil;
|
||||
import com.zbkj.common.vo.BusinessAnalysisVo;
|
||||
import com.zbkj.common.vo.DateLimitUtilVo;
|
||||
@@ -62,7 +65,10 @@ import org.springframework.transaction.support.TransactionTemplate;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -3577,22 +3583,11 @@ public class CarReservationOrderServiceImpl extends ServiceImpl<CarReservationOr
|
||||
BusinessAnalysisVo vo = new BusinessAnalysisVo();
|
||||
|
||||
//统计当前数据
|
||||
CompletableFuture<BigDecimal> current = CompletableFuture.supplyAsync(() -> {
|
||||
|
||||
BigDecimal price = getCount(request.getDateLimit(), request.getMerId(), null);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> current = calculatePrice(request, null);
|
||||
//统计上年数据
|
||||
CompletableFuture<BigDecimal> year = CompletableFuture.supplyAsync(() -> {
|
||||
|
||||
BigDecimal price = getCount(request.getDateLimit(), request.getMerId(), DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> year = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
//统计上个月的数据
|
||||
CompletableFuture<BigDecimal> lastMonth = CompletableFuture.supplyAsync(() -> {
|
||||
BigDecimal price = getCount(request.getDateLimit(), request.getMerId(), DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> lastMonth = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
|
||||
try {
|
||||
CompletableFuture.allOf(current, year, lastMonth).join();
|
||||
@@ -3608,6 +3603,10 @@ public class CarReservationOrderServiceImpl extends ServiceImpl<CarReservationOr
|
||||
return vo;
|
||||
}
|
||||
|
||||
private CompletableFuture<BigDecimal> calculatePrice(BusinessAnalysisRequest request, String dateOffset) {
|
||||
return CompletableFuture.supplyAsync(() -> getCount(request.getDateLimit(), request.getMerId(), dateOffset), service);
|
||||
}
|
||||
|
||||
public BigDecimal getCount(String dateLimit, Integer merId, String type) {
|
||||
LambdaQueryWrapper<CarReservationOrder> lqw = new LambdaQueryWrapper<>();
|
||||
if (StrUtil.isNotBlank(dateLimit)) {
|
||||
|
||||
@@ -10,7 +10,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zbkj.common.constants.*;
|
||||
import com.zbkj.common.constants.BrokerageRecordConstants;
|
||||
import com.zbkj.common.constants.CarRepairOrderConstants;
|
||||
import com.zbkj.common.constants.DateConstants;
|
||||
import com.zbkj.common.constants.OrderConstants;
|
||||
import com.zbkj.common.exception.LxkException;
|
||||
import com.zbkj.common.model.admin.SystemAdmin;
|
||||
import com.zbkj.common.model.car.CarReservationInfo;
|
||||
@@ -36,7 +39,10 @@ import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
@@ -299,21 +305,12 @@ public class ReservationOrderCashDeskServiceImpl extends ServiceImpl<Reservation
|
||||
BusinessAnalysisVo vo = new BusinessAnalysisVo();
|
||||
|
||||
//统计当前数据
|
||||
CompletableFuture<BigDecimal> current = CompletableFuture.supplyAsync(() -> {
|
||||
BigDecimal price = getPrice(request.getDateLimit(), request.getMerId(), null);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> current = calculatePrice(request, null);
|
||||
//统计上年数据
|
||||
CompletableFuture<BigDecimal> year = CompletableFuture.supplyAsync(() -> {
|
||||
|
||||
BigDecimal price = getPrice(request.getDateLimit(), request.getMerId(), DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> year = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
//统计上个月的数据
|
||||
CompletableFuture<BigDecimal> lastMonth = CompletableFuture.supplyAsync(() -> {
|
||||
BigDecimal price = getPrice(request.getDateLimit(), request.getMerId(), DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> lastMonth = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
// 使用CompletableFuture来异步计算当前数据、上年数据和上个月的数据
|
||||
CompletableFuture.allOf(current, year, lastMonth).join();
|
||||
try {
|
||||
//同比
|
||||
@@ -328,26 +325,20 @@ public class ReservationOrderCashDeskServiceImpl extends ServiceImpl<Reservation
|
||||
return vo;
|
||||
}
|
||||
|
||||
private CompletableFuture<BigDecimal> calculatePrice(BusinessAnalysisRequest request, String dateOffset) {
|
||||
return CompletableFuture.supplyAsync(() -> getPrice(request.getDateLimit(), request.getMerId(), dateOffset), service);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BusinessAnalysisVo getCost(BusinessAnalysisRequest request) {
|
||||
BusinessAnalysisVo vo = new BusinessAnalysisVo();
|
||||
|
||||
//统计当前数据
|
||||
CompletableFuture<BigDecimal> current = CompletableFuture.supplyAsync(() -> {
|
||||
BigDecimal price = getTurnover(request.getDateLimit(), request.getMerId(), null);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> current = calculatePrice(request, null);
|
||||
//统计上年数据
|
||||
CompletableFuture<BigDecimal> year = CompletableFuture.supplyAsync(() -> {
|
||||
|
||||
BigDecimal price = getTurnover(request.getDateLimit(), request.getMerId(), DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> year = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_YEAR);
|
||||
//统计上个月的数据
|
||||
CompletableFuture<BigDecimal> lastMonth = CompletableFuture.supplyAsync(() -> {
|
||||
BigDecimal price = getTurnover(request.getDateLimit(), request.getMerId(), DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
return price;
|
||||
}, service);
|
||||
CompletableFuture<BigDecimal> lastMonth = calculatePrice(request, DateConstants.SEARCH_DATE_PRE_MONTH);
|
||||
|
||||
try {
|
||||
CompletableFuture.allOf(current, year, lastMonth).join();
|
||||
|
||||
Reference in New Issue
Block a user