diff --git a/src/main/java/neatlogic/framework/process/crossover/ISelectContentByHashCrossoverMapper.java b/src/main/java/neatlogic/framework/process/crossover/ISelectContentByHashCrossoverMapper.java index 2a8b1591a5d432b12b22d74ce83e077e6a812ba0..30b712022cd7ab7a02e1a3dbdc1bf4b90b79ea5c 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 f477d4138e6b003a07f3095940ec94ede0675d8c..9ec6df63baddb9f06955334abd8ed536f0caef5d 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 776a8dd43106bf671d43b988c0d93fa0af209f11..011a187c96176f688dacf983166c6119b0174da4 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 b59b7d1b51a826f202298a8812219a2dba79660a..fbfc81e1f5e74a11cf8c26c3d021d82c34adab87 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 8a382b5edd682a4e55bb808f66fa790557ef581f..5b88afe4990cd7f290c4c0087130ff91aeb6c997 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()));