From d63cba3740e111956379eb990cd8fad87e6b19ad Mon Sep 17 00:00:00 2001 From: yangyang01000846 <15195822163@163.com> Date: Mon, 19 Jan 2026 23:28:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E6=B1=82=E8=A7=A3?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E6=AD=A3=E5=88=99=E4=BD=BF=E7=94=A8?= =?UTF-8?q?base64=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flowable/delegate/UniversalDelegate.java | 11 ++++++----- .../com/sdm/pbs/controller/TaskAdapter.java | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/flowable/src/main/java/com/sdm/flowable/delegate/UniversalDelegate.java b/flowable/src/main/java/com/sdm/flowable/delegate/UniversalDelegate.java index 54091e2a..a03501e1 100644 --- a/flowable/src/main/java/com/sdm/flowable/delegate/UniversalDelegate.java +++ b/flowable/src/main/java/com/sdm/flowable/delegate/UniversalDelegate.java @@ -1,14 +1,13 @@ package com.sdm.flowable.delegate; import com.alibaba.fastjson2.JSONObject; -import com.fasterxml.jackson.databind.ObjectMapper; 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.req.data.GetFileBaseInfoReq; import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; import com.sdm.common.entity.resp.data.FileMetadataInfoResp; 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.service.IAsyncTaskRecordService; import com.sdm.flowable.service.IProcessNodeParamService; @@ -30,8 +29,9 @@ import java.util.Map; @Component("universalDelegate") @Slf4j public class UniversalDelegate implements JavaDelegate { - @Autowired - private ObjectMapper objectMapper; + +// @Autowired +// private ObjectMapper objectMapper; @Autowired private IProcessNodeParamService processNodeParamService; @@ -88,7 +88,8 @@ public class UniversalDelegate implements JavaDelegate { log.info("节点扩展配置, 流程 runId:{},processDefinitionId:{},实例ID: {}, 节点ID: {}, 扩展配置: {}",runId,processDefinitionId, procInstId, nodeId, extensionElement); BaseExecuteConfig config = - objectMapper.readValue(extensionElement, BaseExecuteConfig.class); +// objectMapper.readValue(extensionElement, BaseExecuteConfig.class); + JSONObject.parseObject(extensionElement, BaseExecuteConfig.class); String executeType = config.getExecuteType(); ExecutionHandler handler = handlerMap.get(executeType); diff --git a/pbs/src/main/java/com/sdm/pbs/controller/TaskAdapter.java b/pbs/src/main/java/com/sdm/pbs/controller/TaskAdapter.java index 8505e35f..a63a3a35 100644 --- a/pbs/src/main/java/com/sdm/pbs/controller/TaskAdapter.java +++ b/pbs/src/main/java/com/sdm/pbs/controller/TaskAdapter.java @@ -10,12 +10,14 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicReference; @@ -81,9 +83,21 @@ public class TaskAdapter implements ITaskFeignClient { // 自动 if (Objects.equals(req.getExecuteMode(),EXECUTE_MODE_AUTO)) { String simulationFileLocalPath = req.getSimulationFileLocalPath(); - String masterFileRegularStr = req.getMasterFileRegularStr(); - String inputFilesRegularStr = req.getInputFilesRegularStr(); + String masterFileRegularStrBase64 = req.getMasterFileRegularStr(); + String inputFilesRegularStrBase64 = req.getInputFilesRegularStr(); AtomicReference 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); masterFilepath=masterFilePathAtomic.get(); // 本地主文件