From d2829c0267dc39246081eab236430b94c9f18231 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Tue, 22 Jul 2025 18:43:32 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E6=85=A2=E6=8E=A5=E5=8F=A3=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1471132643852288]工单详情页慢接口优化 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1471132643852288 --- .../ISelectContentByHashCrossoverMapper.java | 3 +++ .../framework/process/dto/ProcessTaskFormVo.java | 5 ++++- .../process/dto/ProcessTaskStepConfigVo.java | 5 ++++- .../core/OperationAuthHandlerBase.java | 14 ++++++++++---- .../operationauth/core/ProcessAuthManager.java | 15 ++++++++++++++- 5 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/main/java/neatlogic/framework/process/crossover/ISelectContentByHashCrossoverMapper.java b/src/main/java/neatlogic/framework/process/crossover/ISelectContentByHashCrossoverMapper.java index 2a8b1591..30b71202 100644 --- a/src/main/java/neatlogic/framework/process/crossover/ISelectContentByHashCrossoverMapper.java +++ b/src/main/java/neatlogic/framework/process/crossover/ISelectContentByHashCrossoverMapper.java @@ -20,6 +20,7 @@ package neatlogic.framework.process.crossover; import neatlogic.framework.crossover.ICrossoverService; import neatlogic.framework.process.dto.ProcessTaskConfigVo; import neatlogic.framework.process.dto.ProcessTaskContentVo; +import neatlogic.framework.process.dto.ProcessTaskStepConfigVo; import java.util.List; @@ -27,6 +28,8 @@ public interface ISelectContentByHashCrossoverMapper extends ICrossoverService { String getProcessTaskStepConfigByHash(String hash); + List getProcessTaskStepConfigListByHashList(List hashList); + ProcessTaskContentVo getProcessTaskContentByHash(String hash); String getProcessTaskContentStringByHash(String hash); diff --git a/src/main/java/neatlogic/framework/process/dto/ProcessTaskFormVo.java b/src/main/java/neatlogic/framework/process/dto/ProcessTaskFormVo.java index f477d413..9ec6df63 100755 --- a/src/main/java/neatlogic/framework/process/dto/ProcessTaskFormVo.java +++ b/src/main/java/neatlogic/framework/process/dto/ProcessTaskFormVo.java @@ -3,7 +3,10 @@ package neatlogic.framework.process.dto; import org.apache.commons.lang3.StringUtils; import org.springframework.util.DigestUtils; -public class ProcessTaskFormVo { +import java.io.Serializable; + +public class ProcessTaskFormVo implements Serializable { + private static final long serialVersionUID = 1097967001105204846L; // @ESKey(type = ESKeyType.PKEY, name ="processTaskId") private Long processTaskId; private String formUuid; diff --git a/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepConfigVo.java b/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepConfigVo.java index 776a8dd4..011a187c 100755 --- a/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepConfigVo.java +++ b/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepConfigVo.java @@ -1,6 +1,9 @@ package neatlogic.framework.process.dto; -public class ProcessTaskStepConfigVo { +import java.io.Serializable; + +public class ProcessTaskStepConfigVo implements Serializable { + private static final long serialVersionUID = 1097967001105204845L; private String hash; private String config; diff --git a/src/main/java/neatlogic/framework/process/operationauth/core/OperationAuthHandlerBase.java b/src/main/java/neatlogic/framework/process/operationauth/core/OperationAuthHandlerBase.java index b59b7d1b..fbfc81e1 100644 --- a/src/main/java/neatlogic/framework/process/operationauth/core/OperationAuthHandlerBase.java +++ b/src/main/java/neatlogic/framework/process/operationauth/core/OperationAuthHandlerBase.java @@ -1,5 +1,6 @@ package neatlogic.framework.process.operationauth.core; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONPath; @@ -226,11 +227,16 @@ public abstract class OperationAuthHandlerBase implements IOperationAuthHandler protected boolean checkOperationAuthIsConfigured(ProcessTaskVo processTaskVo, ProcessTaskStepVo processTaskStepVo, IOperationType operationType, String userUuid) { JSONArray authorityList = null; - ISelectContentByHashCrossoverMapper selectContentByHashCrossoverMapper = CrossoverServiceFactory.getApi(ISelectContentByHashCrossoverMapper.class); - String stepConfig = selectContentByHashCrossoverMapper.getProcessTaskStepConfigByHash(processTaskStepVo.getConfigHash()); - Integer enableAuthority = (Integer) JSONPath.read(stepConfig, "enableAuthority"); + JSONObject stepConfigObj = processTaskStepVo.getConfig(); + if (stepConfigObj == null) { + ISelectContentByHashCrossoverMapper selectContentByHashCrossoverMapper = CrossoverServiceFactory.getApi(ISelectContentByHashCrossoverMapper.class); + String stepConfig = selectContentByHashCrossoverMapper.getProcessTaskStepConfigByHash(processTaskStepVo.getConfigHash()); + stepConfigObj = JSON.parseObject(stepConfig); + processTaskStepVo.setConfig(stepConfigObj); + } + Integer enableAuthority = stepConfigObj.getInteger("enableAuthority"); if (Objects.equals(enableAuthority, 1)) { - authorityList = (JSONArray) JSONPath.read(stepConfig, "authorityList"); + authorityList = stepConfigObj.getJSONArray("authorityList"); } else { String handler = processTaskStepVo.getHandler(); IProcessStepInternalHandler processStepUtilHandler = ProcessStepInternalHandlerFactory.getHandler(handler); diff --git a/src/main/java/neatlogic/framework/process/operationauth/core/ProcessAuthManager.java b/src/main/java/neatlogic/framework/process/operationauth/core/ProcessAuthManager.java index 8a382b5e..5b88afe4 100644 --- a/src/main/java/neatlogic/framework/process/operationauth/core/ProcessAuthManager.java +++ b/src/main/java/neatlogic/framework/process/operationauth/core/ProcessAuthManager.java @@ -1,5 +1,6 @@ package neatlogic.framework.process.operationauth.core; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.crossover.CrossoverServiceFactory; @@ -242,6 +243,15 @@ public class ProcessAuthManager { Map processTaskStepAgentMap = processTaskStepAgentList.stream().collect(Collectors.toMap(e -> e.getProcessTaskStepId(), e -> e)); List processTaskStepList = processTaskCrossoverMapper.getProcessTaskStepListByProcessTaskIdList(processTaskIdList); + ISelectContentByHashCrossoverMapper selectContentByHashCrossoverMapper = CrossoverServiceFactory.getApi(ISelectContentByHashCrossoverMapper.class); + Map hash2ConfigMap = new HashMap<>(); + Set configHashSet = processTaskStepList.stream().map(ProcessTaskStepVo::getConfigHash).filter(Objects::nonNull).collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(configHashSet)) { + List configList = selectContentByHashCrossoverMapper.getProcessTaskStepConfigListByHashList(new ArrayList<>(configHashSet)); + for (ProcessTaskStepConfigVo processTaskStepConfigVo : configList) { + hash2ConfigMap.put(processTaskStepConfigVo.getHash(), processTaskStepConfigVo.getConfig()); + } + } Map> processTaskStepListMap = new HashMap<>(); for (ProcessTaskStepVo processTaskStepVo : processTaskStepList) { processTaskStepVo.setWorkerList( @@ -254,6 +264,10 @@ public class ProcessAuthManager { } processTaskStepListMap.computeIfAbsent(processTaskStepVo.getProcessTaskId(), k -> new ArrayList<>()) .add(processTaskStepVo); + String stepConfig = hash2ConfigMap.get(processTaskStepVo.getConfigHash()); + if (StringUtils.isNotBlank(stepConfig)) { + processTaskStepVo.setConfig(JSON.parseObject(stepConfig)); + } } List processTaskStepRelList = processTaskCrossoverMapper.getProcessTaskStepRelListByProcessTaskIdList(processTaskIdList); @@ -267,7 +281,6 @@ public class ProcessAuthManager { List processTaskList = processTaskCrossoverMapper.getProcessTaskListByIdList(processTaskIdList); Set hashSet = processTaskList.stream().map(ProcessTaskVo::getConfigHash).collect(Collectors.toSet()); // long startTime3 = System.currentTimeMillis(); - ISelectContentByHashCrossoverMapper selectContentByHashCrossoverMapper = CrossoverServiceFactory.getApi(ISelectContentByHashCrossoverMapper.class); List processTaskConfigList = selectContentByHashCrossoverMapper.getProcessTaskConfigListByHashList(new ArrayList<>(hashSet)); // logger.error("D:" + (System.currentTimeMillis() - startTime3)); Map processTaskConfigMap = processTaskConfigList.stream().collect(Collectors.toMap(e->e.getHash(), e -> e.getConfig())); -- Gitee