修改:求解文件的正则使用base64传递

This commit is contained in:
yangyang01000846
2026-01-19 23:28:55 +08:00
parent 303b35a74b
commit d63cba3740
2 changed files with 22 additions and 7 deletions

View File

@@ -1,14 +1,13 @@
package com.sdm.flowable.delegate; package com.sdm.flowable.delegate;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sdm.common.common.SdmResponse; import com.sdm.common.common.SdmResponse;
import com.sdm.common.config.FlowableConfig;
import com.sdm.common.entity.flowable.executeConfig.BaseExecuteConfig; import com.sdm.common.entity.flowable.executeConfig.BaseExecuteConfig;
import com.sdm.common.entity.req.data.GetFileBaseInfoReq; import com.sdm.common.entity.req.data.GetFileBaseInfoReq;
import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; import com.sdm.common.entity.req.flowable.AsyncCallbackRequest;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp; import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.feign.inter.data.IDataFeignClient; import com.sdm.common.feign.inter.data.IDataFeignClient;
import com.sdm.common.config.FlowableConfig;
import com.sdm.flowable.delegate.handler.ExecutionHandler; import com.sdm.flowable.delegate.handler.ExecutionHandler;
import com.sdm.flowable.service.IAsyncTaskRecordService; import com.sdm.flowable.service.IAsyncTaskRecordService;
import com.sdm.flowable.service.IProcessNodeParamService; import com.sdm.flowable.service.IProcessNodeParamService;
@@ -30,8 +29,9 @@ import java.util.Map;
@Component("universalDelegate") @Component("universalDelegate")
@Slf4j @Slf4j
public class UniversalDelegate implements JavaDelegate { public class UniversalDelegate implements JavaDelegate {
@Autowired
private ObjectMapper objectMapper; // @Autowired
// private ObjectMapper objectMapper;
@Autowired @Autowired
private IProcessNodeParamService processNodeParamService; private IProcessNodeParamService processNodeParamService;
@@ -88,7 +88,8 @@ public class UniversalDelegate implements JavaDelegate {
log.info("节点扩展配置, 流程 runId{},processDefinitionId:{},实例ID: {}, 节点ID: {}, 扩展配置: {}",runId,processDefinitionId, procInstId, nodeId, extensionElement); log.info("节点扩展配置, 流程 runId{},processDefinitionId:{},实例ID: {}, 节点ID: {}, 扩展配置: {}",runId,processDefinitionId, procInstId, nodeId, extensionElement);
BaseExecuteConfig config = BaseExecuteConfig config =
objectMapper.readValue(extensionElement, BaseExecuteConfig.class); // objectMapper.readValue(extensionElement, BaseExecuteConfig.class);
JSONObject.parseObject(extensionElement, BaseExecuteConfig.class);
String executeType = config.getExecuteType(); String executeType = config.getExecuteType();
ExecutionHandler handler = handlerMap.get(executeType); ExecutionHandler handler = handlerMap.get(executeType);

View File

@@ -10,12 +10,14 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
@@ -81,9 +83,21 @@ public class TaskAdapter implements ITaskFeignClient {
// 自动 // 自动
if (Objects.equals(req.getExecuteMode(),EXECUTE_MODE_AUTO)) { if (Objects.equals(req.getExecuteMode(),EXECUTE_MODE_AUTO)) {
String simulationFileLocalPath = req.getSimulationFileLocalPath(); String simulationFileLocalPath = req.getSimulationFileLocalPath();
String masterFileRegularStr = req.getMasterFileRegularStr(); String masterFileRegularStrBase64 = req.getMasterFileRegularStr();
String inputFilesRegularStr = req.getInputFilesRegularStr(); String inputFilesRegularStrBase64 = req.getInputFilesRegularStr();
AtomicReference<String> masterFilePathAtomic = new AtomicReference<>(); AtomicReference<String> masterFilePathAtomic = new AtomicReference<>();
// 根据正则表达式获取求解文件及从文件正则表达式是包含特殊字符的转换成base64
// 2. 后端解码Base64
String masterFileRegularStr = new String(
Base64.getDecoder().decode(masterFileRegularStrBase64),
StandardCharsets.UTF_8
);
String inputFilesRegularStr= StringUtils.isNotBlank(inputFilesRegularStrBase64)?"":
new String(
Base64.getDecoder().decode(inputFilesRegularStrBase64),
StandardCharsets.UTF_8
);
log.info("Hpc任务执行主求解文件正则{},从文件正则:{}", masterFileRegularStr,inputFilesRegularStr);
FilesUtil.collectFiles(simulationFileLocalPath,masterFileRegularStr,inputFilesRegularStr,masterFilePathAtomic,inputFilePaths); FilesUtil.collectFiles(simulationFileLocalPath,masterFileRegularStr,inputFilesRegularStr,masterFilePathAtomic,inputFilePaths);
masterFilepath=masterFilePathAtomic.get(); masterFilepath=masterFilePathAtomic.get();
// 本地主文件 // 本地主文件