From a44e6a5562eb8cf679dd96a0ef4a821c76463853 Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Fri, 6 Feb 2026 16:50:27 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9batchOperation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/service/impl/TaskServiceImpl.java | 80 +++++++++++++++++-- 1 file changed, 73 insertions(+), 7 deletions(-) diff --git a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java index a510ce0e..589a7e9e 100644 --- a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java @@ -4039,11 +4039,77 @@ public class TaskServiceImpl implements ITaskService { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return SdmResponse.failed("新建任务:" + task.getTaskName() + "的文件夹失败,原因:" + taskCreateDirResponse.getMessage()); } + }else { + // 查询原来的任务是否有文件夹 + GetFileBaseInfoReq getFileBaseInfoReq = new GetFileBaseInfoReq(); + getFileBaseInfoReq.setUuid(taskId); + log.info("调用获取文件的基本信息的参数为:{}",getFileBaseInfoReq); + SdmResponse fileBaseInfo = dataClientFeignClient.getFileBaseInfo(getFileBaseInfoReq); + log.info("调用获取文件的基本信息的返回值为:{}",fileBaseInfo); + if (fileBaseInfo.isSuccess() && ObjectUtils.isNotEmpty(fileBaseInfo.getData())) { + log.info("当前任务:{},已创建过文件夹",taskId); + }else { + log.info("当前任务:{},没有创建过文件夹,进行创建,兼容原来的逻辑",taskId); + String maxNonEmptyTag = getMaxNonEmptyTag(spdmBatchTaskOprTagReq); + log.info("maxNonEmptyTag为:{}",maxNonEmptyTag); + if (StringUtils.isBlank(maxNonEmptyTag)) { + log.error("新建任务:{}的文件夹失败,原因为:{}", task.getTaskName(), "未查询到任务上层节点"); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return SdmResponse.failed("新建任务:" + task.getTaskName() + "的文件夹失败,原因:" + "未查询到任务上层节点"); + } + SdmResponse taskCreateDirResponse = createDirNew(task.getUuid(), NodeTypeEnum.TASK.getValue(), maxNonEmptyTag, task.getTaskName()); + if (ObjectUtils.isEmpty(taskCreateDirResponse) || taskCreateDirResponse.getCode() != ResultCode.SUCCESS.getCode()) { + log.error("新建任务:{}的文件夹失败,原因为:{}", task.getTaskName(), taskCreateDirResponse.getMessage()); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return SdmResponse.failed("新建任务:" + task.getTaskName() + "的文件夹失败,原因:" + taskCreateDirResponse.getMessage()); + } + } } } return SdmResponse.success(); } + /** + * 返回 tag 数字最大的不为空的值 + * @param req SpdmBatchTaskOprTagReq 对象 + * @return 最大编号的非空 tag 值,无则返回 null + */ + public static String getMaxNonEmptyTag(SpdmBatchTaskOprTagReq req) { + // 空对象校验 + if (req == null) { + return null; + } + + // 按编号从大到小检查,找到第一个非空值立即返回 + if (StringUtils.isNotBlank(req.getTag8())) { + return req.getTag8(); + } + if (StringUtils.isNotBlank(req.getTag7())) { + return req.getTag7(); + } + if (StringUtils.isNotBlank(req.getTag6())) { + return req.getTag6(); + } + if (StringUtils.isNotBlank(req.getTag5())) { + return req.getTag5(); + } + if (StringUtils.isNotBlank(req.getTag4())) { + return req.getTag4(); + } + if (StringUtils.isNotBlank(req.getTag3())) { + return req.getTag3(); + } + if (StringUtils.isNotBlank(req.getTag2())) { + return req.getTag2(); + } + if (StringUtils.isNotBlank(req.getTag1())) { + return req.getTag1(); + } + + // 所有 tag 都为空 + return null; + } + /** * 返回不同字段的最大tag @@ -4057,13 +4123,13 @@ public class TaskServiceImpl implements ITaskService { if (spdmBatchTaskOprReq == null || spdmBatchTaskOprTagReq == null) { throw new IllegalArgumentException("比较的对象不能为null"); } - // 倒序遍历(10到1),找到第一个不同的直接返回 - if (!equalsWithNull(spdmBatchTaskOprReq.getTag10(), spdmBatchTaskOprTagReq.getTag10())) { - return spdmBatchTaskOprReq.getTag10(); - } - if (!equalsWithNull(spdmBatchTaskOprReq.getTag9(), spdmBatchTaskOprTagReq.getTag9())) { - return spdmBatchTaskOprReq.getTag9(); - } + // 倒序遍历(8到1),找到第一个不同的直接返回 +// if (!equalsWithNull(spdmBatchTaskOprReq.getTag10(), spdmBatchTaskOprTagReq.getTag10())) { +// return spdmBatchTaskOprReq.getTag10(); +// } +// if (!equalsWithNull(spdmBatchTaskOprReq.getTag9(), spdmBatchTaskOprTagReq.getTag9())) { +// return spdmBatchTaskOprReq.getTag9(); +// } if (!equalsWithNull(spdmBatchTaskOprReq.getTag8(), spdmBatchTaskOprTagReq.getTag8())) { return spdmBatchTaskOprReq.getTag8(); }