diff --git a/src/main/java/neatlogic/framework/process/crossover/IProcessTaskStepDataCrossoverMapper.java b/src/main/java/neatlogic/framework/process/crossover/IProcessTaskStepDataCrossoverMapper.java index 0a2c0a2a3859b8c24e29f8827ceafa4e426a73c7..403c0ef679f8b85f112d81cacf10ccc075ee4c96 100644 --- a/src/main/java/neatlogic/framework/process/crossover/IProcessTaskStepDataCrossoverMapper.java +++ b/src/main/java/neatlogic/framework/process/crossover/IProcessTaskStepDataCrossoverMapper.java @@ -19,14 +19,17 @@ package neatlogic.framework.process.crossover; import neatlogic.framework.crossover.ICrossoverService; import neatlogic.framework.process.dto.ProcessTaskStepDataVo; +import org.apache.ibatis.annotations.Param; import java.util.List; public interface IProcessTaskStepDataCrossoverMapper extends ICrossoverService { - List getProcessTaskStepDataByProcessTaskIdAndStepId(Long processTaskId, Long stepId); + List getProcessTaskStepDataByProcessTaskIdAndStepId(@Param("processTaskId") Long processTaskId, @Param("processTaskStepId") Long stepId); ProcessTaskStepDataVo getProcessTaskStepData(ProcessTaskStepDataVo processTaskStepDataVo); + List searchProcessTaskStepData(ProcessTaskStepDataVo processTaskStepDataVo); + Long getProcessTaskStepDataId(ProcessTaskStepDataVo processTaskStepDataVo); int checkProcessTaskStepDataIdIsExists(Long id); 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/dto/ProcessTaskStepContentTargetVo.java b/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepContentTargetVo.java new file mode 100644 index 0000000000000000000000000000000000000000..467f3688c0a6bdeba0eeb8caf4d8d3c69a59f586 --- /dev/null +++ b/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepContentTargetVo.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2025 深圳极向量科技有限公司 All Rights Reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package neatlogic.framework.process.dto; + +import java.io.Serializable; + +public class ProcessTaskStepContentTargetVo implements Serializable { + private static final long serialVersionUID = -3871232273093802237L; + + private Long contentId; + private String type; + private String uuid; + + public Long getContentId() { + return contentId; + } + + public void setContentId(Long contentId) { + this.contentId = contentId; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } +} diff --git a/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepUserVo.java b/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepUserVo.java index 307895ebb8a52c6bf52028d70118fbdaa11a5538..26e93d8c8413c218f927800c99da7067df9cc757 100644 --- a/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepUserVo.java +++ b/src/main/java/neatlogic/framework/process/dto/ProcessTaskStepUserVo.java @@ -1,7 +1,6 @@ package neatlogic.framework.process.dto; import neatlogic.framework.dto.UserVo; -import neatlogic.framework.process.constvalue.ProcessTaskStatus; import neatlogic.framework.process.constvalue.ProcessTaskStepUserStatus; import org.apache.commons.lang3.StringUtils; @@ -96,7 +95,7 @@ public class ProcessTaskStepUserVo { @Deprecated public UserVo getUserVo() { if (userVo == null && StringUtils.isNotBlank(userUuid)) { - userVo = new UserVo(userUuid); + userVo = new UserVo(userUuid, false); userVo.setUserName(userName); } return userVo; 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..8d34634e112d6a7ebc29f4bd8ff2a0fb2b4b6205 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,12 @@ 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)); + } else { + processTaskStepVo.setConfig(new JSONObject()); + } } List processTaskStepRelList = processTaskCrossoverMapper.getProcessTaskStepRelListByProcessTaskIdList(processTaskIdList); @@ -267,7 +283,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())); diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessTaskStepContext.java b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessTaskStepContext.java index c3e501efe8f983cdb6f2886914fc36e1b732f4b0..27f35f95f48e9d1c18099d615754d540494fe62d 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessTaskStepContext.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessTaskStepContext.java @@ -101,8 +101,8 @@ public class ProcessTaskStepContext { * @return FormAttributeVo */ public FormAttributeVo getFormAttribute(String attributeUuid) { - IFormCrossoverService formCrossoverMapper = CrossoverServiceFactory.getApi(IFormCrossoverService.class); - return formCrossoverMapper.getFormAttributeByUuid(attributeUuid); + IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); + return formCrossoverService.getFormAttributeByUuid(attributeUuid); } /**