瀏覽代碼

modify:

1. 状态变更失败报错;
tags/24083001
WendyYang 3 週之前
父節點
當前提交
ce3172882f
共有 4 個文件被更改,包括 20 次插入18 次删除
  1. +1
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/common/config/BeanConfig.java
  2. +11
    -13
      hz-pm-api/src/main/java/com/hz/pm/api/common/handler/CpuLoadTask.java
  3. +6
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/TenderStateMachineUtil.java
  4. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java

+ 1
- 3
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.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;


import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;


/** /**
@@ -55,7 +53,7 @@ public class BeanConfig {
converterList.remove(converterTarget); converterList.remove(converterTarget);
} }
HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8); HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
converterList.add(1,converter);
converterList.add(1, converter);


MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList( mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(


+ 11
- 13
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.core.util.RandomUtil;
import cn.hutool.system.oshi.OshiUtil; import cn.hutool.system.oshi.OshiUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;


@@ -25,16 +25,21 @@ import java.util.stream.Stream;
* @since 20:30 2024/3/5 * @since 20:30 2024/3/5
*/ */
@Slf4j @Slf4j
@Profile("prod")
@Configuration @Configuration
@ConditionalOnExpression("${cpu-load-task.open:false}")
public class CpuLoadTask { 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 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 { 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) @Scheduled(fixedRate = 1, timeUnit = TimeUnit.MINUTES)
public void run() { public void run() {
@@ -67,7 +65,7 @@ public class CpuLoadTask {
log.info("当前CPU使用率:{}", cpuUsage); log.info("当前CPU使用率:{}", cpuUsage);
if (cpuUsage < CPU_LIMIT) { if (cpuUsage < CPU_LIMIT) {
log.info("提交计算任务:{}", taskNo.incrementAndGet()); log.info("提交计算任务:{}", taskNo.incrementAndGet());
FIXED_THREAD_POOL.execute(() -> {
fixedThreadPool.execute(() -> {
StopWatch watch = new StopWatch(); StopWatch watch = new StopWatch();
watch.start(); watch.start();
long sum = Stream.generate(() -> RandomUtil.randomLong(1, LIMIT_COUNT)) long sum = Stream.generate(() -> RandomUtil.randomLong(1, LIMIT_COUNT))


+ 6
- 0
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; 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.builder.impl.TenderStateMachineBuilderImpl;
import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent; import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent;
import com.hz.pm.api.projectdeclared.model.entity.Purchase; 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.entity.PurchaseStatusChange;
import com.hz.pm.api.projectlib.model.enumeration.status.ITenderStatus; import com.hz.pm.api.projectlib.model.enumeration.status.ITenderStatus;
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService;
import com.ningdatech.basic.exception.BizException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.Message; import org.springframework.messaging.Message;
@@ -64,6 +66,10 @@ public class TenderStateMachineUtil implements AbstractStateMachineUtil<Purchase
stateMachine.sendEvent(message); stateMachine.sendEvent(message);
change.setAfterStatus(purchase.getStatus()); change.setAfterStatus(purchase.getStatus());
purchaseStatusChangeService.save(change); purchaseStatusChangeService.save(change);
if (ObjUtil.equal(change.getBeforeStatus(), change.getBeforeStatus())) {
log.error("状态变更失败:{} {}", purchase, event);
throw BizException.wrap("状态变更失败");
}
log.info("调用状态机后的标段状态为:{}", purchase.getStatus()); log.info("调用状态机后的标段状态为:{}", purchase.getStatus());
} }




+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java 查看文件

@@ -180,8 +180,8 @@ public class PurchaseManage {
query.exists(ExistsSqlConst.PROJECT_EXISTS_PURCHASE + query.exists(ExistsSqlConst.PROJECT_EXISTS_PURCHASE +
" and np.status = {0} ", req.getTabStatus()); " and np.status = {0} ", req.getTabStatus());
} else if (TenderMainStatus.PURCHASE_FINISHED.eq(req.getTabStatus())) { } else if (TenderMainStatus.PURCHASE_FINISHED.eq(req.getTabStatus())) {
query.exists(ExistsSqlConst.PROJECT_EXISTS_PURCHASE_STATUS_CHANGE +
" and npsc.event = {0} ", TenderStateChangeEvent.SUBMIT_PURCHASE_CONSTRUCTION_INFO);
query.exists(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE +
" and npsc.event = {0} ", ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD);
} else if (ProjectStatus.TO_BE_PURCHASED.eq(req.getTabStatus())) { } else if (ProjectStatus.TO_BE_PURCHASED.eq(req.getTabStatus())) {
query.eq(Project::getStatus, ProjectStatus.TO_BE_PURCHASED.getCode()); query.eq(Project::getStatus, ProjectStatus.TO_BE_PURCHASED.getCode());
} else { } else {


Loading…
取消
儲存