diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/common/config/BeanConfig.java b/hz-pm-api/src/main/java/com/hz/pm/api/common/config/BeanConfig.java index 4945c38..65bd1dc 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/common/config/BeanConfig.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/common/config/BeanConfig.java @@ -17,14 +17,12 @@ import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.web.client.RestTemplate; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** @@ -55,7 +53,7 @@ public class BeanConfig { converterList.remove(converterTarget); } HttpMessageConverter converter = new StringHttpMessageConverter(StandardCharsets.UTF_8); - converterList.add(1,converter); + converterList.add(1, converter); MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList( diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/common/handler/CpuLoadTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/common/handler/CpuLoadTask.java index 9dc1bc9..ee69397 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/common/handler/CpuLoadTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/common/handler/CpuLoadTask.java @@ -4,8 +4,8 @@ import cn.hutool.core.date.StopWatch; import cn.hutool.core.util.RandomUtil; import cn.hutool.system.oshi.OshiUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; import org.springframework.lang.NonNull; import org.springframework.scheduling.annotation.Scheduled; @@ -25,16 +25,21 @@ import java.util.stream.Stream; * @since 20:30 2024/3/5 */ @Slf4j -@Profile("prod") @Configuration +@ConditionalOnExpression("${cpu-load-task.open:false}") public class CpuLoadTask { - private static final int LIMIT_COUNT = 2000000000; - private final AtomicInteger taskNo = new AtomicInteger(0); + public CpuLoadTask() { + CpuLoadThreadFactory threadFactory = new CpuLoadThreadFactory(Thread.MIN_PRIORITY); + fixedThreadPool = Executors.newFixedThreadPool(1, threadFactory); + } + + private final ExecutorService fixedThreadPool; private static final Integer CPU_LIMIT = 20; + private static final int LIMIT_COUNT = 1000000000; + private final AtomicInteger taskNo = new AtomicInteger(0); - private static final ExecutorService FIXED_THREAD_POOL; private static class CpuLoadThreadFactory implements ThreadFactory { @@ -53,13 +58,6 @@ public class CpuLoadTask { } - static { - int logicalProcessorCount = OshiUtil.getProcessor().getLogicalProcessorCount(); - int max = Math.max(logicalProcessorCount * CPU_LIMIT / 100, 1); - CpuLoadThreadFactory threadFactory = new CpuLoadThreadFactory(Thread.MIN_PRIORITY); - FIXED_THREAD_POOL = Executors.newFixedThreadPool(max, threadFactory); - } - @Scheduled(fixedRate = 1, timeUnit = TimeUnit.MINUTES) public void run() { @@ -67,7 +65,7 @@ public class CpuLoadTask { log.info("当前CPU使用率:{}", cpuUsage); if (cpuUsage < CPU_LIMIT) { log.info("提交计算任务:{}", taskNo.incrementAndGet()); - FIXED_THREAD_POOL.execute(() -> { + fixedThreadPool.execute(() -> { StopWatch watch = new StopWatch(); watch.start(); long sum = Stream.generate(() -> RandomUtil.randomLong(1, LIMIT_COUNT)) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/TenderStateMachineUtil.java b/hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/TenderStateMachineUtil.java index b429652..c792a0e 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/TenderStateMachineUtil.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/TenderStateMachineUtil.java @@ -1,5 +1,6 @@ package com.hz.pm.api.common.statemachine.util; +import cn.hutool.core.util.ObjUtil; import com.hz.pm.api.common.statemachine.builder.impl.TenderStateMachineBuilderImpl; import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent; import com.hz.pm.api.projectdeclared.model.entity.Purchase; @@ -7,6 +8,7 @@ import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; import com.hz.pm.api.projectlib.model.enumeration.status.ITenderStatus; import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; +import com.ningdatech.basic.exception.BizException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.messaging.Message; @@ -64,6 +66,10 @@ public class TenderStateMachineUtil implements AbstractStateMachineUtil