diff --git a/src/main/java/neatlogic/framework/autoexec/dao/mapper/AutoexecJobMapper.xml b/src/main/java/neatlogic/framework/autoexec/dao/mapper/AutoexecJobMapper.xml index d23c771039a56438d3b74b82fa0add09ac07a7c6..a48094ded848ed637ac3200a8ab139263775c5c5 100644 --- a/src/main/java/neatlogic/framework/autoexec/dao/mapper/AutoexecJobMapper.xml +++ b/src/main/java/neatlogic/framework/autoexec/dao/mapper/AutoexecJobMapper.xml @@ -3215,8 +3215,10 @@ along with this program. If not, see .--> UPDATE `autoexec_job` SET `status` = #{status} - + ,`start_time` = NOW(3) + + ,`end_time` = NULL diff --git a/src/main/java/neatlogic/framework/autoexec/dto/job/AutoexecJobPhaseOperationVo.java b/src/main/java/neatlogic/framework/autoexec/dto/job/AutoexecJobPhaseOperationVo.java index 613b957cf721453c707c787b102b1f94de041410..3e746704402fdf003afdf2dd150d768cdcc3debf 100644 --- a/src/main/java/neatlogic/framework/autoexec/dto/job/AutoexecJobPhaseOperationVo.java +++ b/src/main/java/neatlogic/framework/autoexec/dto/job/AutoexecJobPhaseOperationVo.java @@ -154,13 +154,15 @@ public class AutoexecJobPhaseOperationVo implements Serializable { List paramMappingVos = operationConfigVo.getParamMappingList(); List argumentMappingVos = operationConfigVo.getArgumentMappingList(); AutoexecOperationBaseVo autoexecOperationBaseVo = autoexecCombopPhaseOperationVo.getOperation(); - List inputParamList = autoexecOperationBaseVo.getInputParamList(); + List operationInputParamList = autoexecOperationBaseVo.getInputParamList(); AutoexecParamVo argumentParam = autoexecOperationBaseVo.getArgument(); //替换输入参数(上游参数) if (CollectionUtils.isNotEmpty(paramMappingVos)) { for (ParamMappingVo paramMappingVo : paramMappingVos) { - for (AutoexecParamVo input : inputParamList) { - exchangeParam(paramMappingVo, input, phaseVo, jobPhaseVoList, operationVo, preOperationNameMap); + if (CollectionUtils.isNotEmpty(operationInputParamList)) { + for (AutoexecParamVo input : operationInputParamList) { + exchangeParam(paramMappingVo, input, phaseVo, jobPhaseVoList, operationVo, preOperationNameMap, null); + } } } } @@ -168,7 +170,7 @@ public class AutoexecJobPhaseOperationVo implements Serializable { if (CollectionUtils.isNotEmpty(argumentMappingVos)) { for (ParamMappingVo argumentMappingVo : argumentMappingVos) { if (argumentParam != null) { - exchangeArgumentParam(jobVo.getConfig().getRuntimeParamList(), argumentMappingVo, argumentParam); + exchangeParam(argumentMappingVo, argumentParam, phaseVo, jobPhaseVoList, operationVo, preOperationNameMap, jobVo.getConfig().getRuntimeParamList()); } } } @@ -182,30 +184,6 @@ public class AutoexecJobPhaseOperationVo implements Serializable { this.profileId = autoexecCombopPhaseOperationVo.getConfig().getProfileId(); } - /** - * 自由参数引用作业,应该以作业参数的类型为准 - * - * @param runtimeParamList 组合工具作业参数 - * @param paramMappingVo 工具自由参数值 - * @param param 工具自由参数 - */ - private void exchangeArgumentParam(List runtimeParamList, ParamMappingVo paramMappingVo, AutoexecParamVo param) { - Optional argumentParamOptional; - if (CollectionUtils.isNotEmpty(runtimeParamList)) { - argumentParamOptional = runtimeParamList.stream().filter(o -> Objects.equals(o.getKey(), paramMappingVo.getValue())).findFirst(); - if (Objects.equals(paramMappingVo.getMappingMode(), ParamMappingMode.RUNTIME_PARAM.getValue()) && argumentParamOptional.isPresent()) { - paramMappingVo.setType(argumentParamOptional.get().getType()); - } else { - paramMappingVo.setType(param.getType()); - } - } else { - paramMappingVo.setType(param.getType()); - } - paramMappingVo.setName(param.getName()); - paramMappingVo.setDescription(param.getDescription()); - - } - /** * 替换参数值(上游参数) * @@ -215,10 +193,21 @@ public class AutoexecJobPhaseOperationVo implements Serializable { * @param jobPhaseVoList 所有阶段 * @param operationVo 工具 * @param preOperationNameMap 记录上游阶段工具uuid对应的名称 + * @param runtimeParamList 组合工具作业参数 */ - private void exchangeParam(ParamMappingVo paramMappingVo, AutoexecParamVo param, AutoexecJobPhaseVo phaseVo, List jobPhaseVoList, AutoexecOperationVo operationVo, Map preOperationNameMap) { - if (Objects.equals(paramMappingVo.getKey(), param.getKey())) { - paramMappingVo.setType(param.getType()); + private void exchangeParam(ParamMappingVo paramMappingVo, AutoexecParamVo param, AutoexecJobPhaseVo phaseVo, List jobPhaseVoList, AutoexecOperationVo operationVo, Map preOperationNameMap, List runtimeParamList) { + if ((StringUtils.isBlank(paramMappingVo.getKey()) && StringUtils.isBlank(param.getKey())) || Objects.equals(paramMappingVo.getKey(), param.getKey())) { + Optional argumentParamOptional; + if (CollectionUtils.isNotEmpty(runtimeParamList)) { + argumentParamOptional = runtimeParamList.stream().filter(o -> Objects.equals(o.getKey(), paramMappingVo.getValue())).findFirst(); + if (Objects.equals(paramMappingVo.getMappingMode(), ParamMappingMode.RUNTIME_PARAM.getValue()) && argumentParamOptional.isPresent()) { + paramMappingVo.setType(argumentParamOptional.get().getType()); + } else { + paramMappingVo.setType(param.getType()); + } + } else { + paramMappingVo.setType(param.getType()); + } paramMappingVo.setName(param.getName()); paramMappingVo.setDescription(param.getDescription()); Object value = paramMappingVo.getValue(); diff --git a/src/main/java/neatlogic/framework/autoexec/job/source/type/AutoexecJobSourceTypeHandlerBase.java b/src/main/java/neatlogic/framework/autoexec/job/source/type/AutoexecJobSourceTypeHandlerBase.java index 5d4ea878243cd2daed62a41bbec19a98b1311211..25352a69b8da0194a3854100f6bea0e58314f0e2 100644 --- a/src/main/java/neatlogic/framework/autoexec/job/source/type/AutoexecJobSourceTypeHandlerBase.java +++ b/src/main/java/neatlogic/framework/autoexec/job/source/type/AutoexecJobSourceTypeHandlerBase.java @@ -6,12 +6,18 @@ import neatlogic.framework.autoexec.dao.mapper.AutoexecJobMapper; import neatlogic.framework.autoexec.dto.AutoexecParamVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.autoexec.exception.AutoexecJobExecutePermissionDeniedException; +import neatlogic.framework.dao.mapper.UserMapper; +import neatlogic.framework.dto.UserVo; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import java.util.Arrays; +import java.util.List; import java.util.Map; +import java.util.Objects; /** * @author longrf @@ -20,11 +26,18 @@ import java.util.Map; public abstract class AutoexecJobSourceTypeHandlerBase implements IAutoexecJobSourceTypeHandler { protected static AutoexecJobMapper autoexecJobMapper; + protected static UserMapper userMapper; + @Autowired private void setAutoexecJobMapper(AutoexecJobMapper _autoexecJobMapper) { autoexecJobMapper = _autoexecJobMapper; } + @Autowired + private void setUserMapper(UserMapper _userMapper) { + userMapper = _userMapper; + } + Logger logger = LoggerFactory.getLogger(AutoexecJobSourceTypeHandlerBase.class); public void getFireParamJson(JSONObject jsonObject, AutoexecJobVo jobVo) { @@ -48,7 +61,19 @@ public abstract class AutoexecJobSourceTypeHandlerBase implements IAutoexecJobSo if (jobParam.getIsTakeOver() == 1) { autoexecJobMapper.updateJobExecUser(jobId, jobParam.getExecUser()); } else { - throw new AutoexecJobExecutePermissionDeniedException(jobId, execUser, jobParam.getExecUser()); + List userVos = userMapper.getUserByUserUuidList(Arrays.asList(execUser, originJob.getExecUser())); + String currentUserName = execUser; + String originUserName = originJob.getExecUser(); + if (CollectionUtils.isNotEmpty(userVos)) { + for (UserVo userVo : userVos) { + if (Objects.equals(userVo.getUuid(), currentUserName)) { + currentUserName = userVo.getName() + "(" + userVo.getUserId() + ")"; + } else if (Objects.equals(userVo.getUuid(), originUserName)) { + originUserName = userVo.getName() + "(" + userVo.getUserId() + ")"; + } + } + } + throw new AutoexecJobExecutePermissionDeniedException(jobId, currentUserName, originUserName); } } }