diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/consumer/WebCadOrderImportConsumer.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/consumer/WebCadOrderImportConsumer.java index 1724d0003..759ac3b91 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/consumer/WebCadOrderImportConsumer.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/service/orderImport/consumer/WebCadOrderImportConsumer.java @@ -2,6 +2,7 @@ package com.cf.imes.module.plan.service.orderImport.consumer; import cn.hutool.core.util.ObjectUtil; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; @@ -122,8 +123,6 @@ public class WebCadOrderImportConsumer { boolean nackSent = false; TransactionStatus transactionStatus = null; try { - transactionStatus = transactionManager.getTransaction(TransactionDefinition.withDefaults()); - organId = OrganContextHolder.getOrganId(); if (ObjectUtil.isNull(organId)) { throw ServiceExceptionUtil.exception(ORDER_IMPORT_ORGANID_NOT_EXISTS); @@ -134,8 +133,11 @@ public class WebCadOrderImportConsumer { } else { DynamicDataSourceContextHolder.push(peek); } + + // 获取事务 + transactionStatus = transactionManager.getTransaction(TransactionDefinition.withDefaults()); // 确认任务,更新状态为消费成功,没有找到任务中断后续消费 - OrderImportTaskDO orderImportTaskDO = confirmOrderImport(taskId); + OrderImportTaskDO orderImportTaskDO = confirmOrderImport(taskId, organId); if (ObjectUtil.isNull(orderImportTaskDO)) { return; } @@ -190,12 +192,14 @@ public class WebCadOrderImportConsumer { * * @param taskId */ - private OrderImportTaskDO confirmOrderImport(Long taskId) { + private OrderImportTaskDO confirmOrderImport(Long taskId, Long organId) { boolean taskExist = false; OrderImportTaskDO orderImportTaskDO = null; // 线程每1s查询一次,查三次没有就提示任务不存在 for (int i = 0; i < 3; i++) { - orderImportTaskDO = orderImportTaskMapper.selectById(taskId); + orderImportTaskDO = orderImportTaskMapper.selectOne(new LambdaQueryWrapper() + .eq(OrderImportTaskDO::getId, taskId) + .eq(OrderImportTaskDO::getOrganId, organId)); if (ObjectUtil.isNotNull(orderImportTaskDO)) { taskExist = true; break; @@ -209,13 +213,17 @@ public class WebCadOrderImportConsumer { } if (taskExist) { // 更新状态为消费成功 - orderImportTaskMapper.update(new LambdaUpdateWrapper().eq(OrderImportTaskDO::getId, taskId).set(OrderImportTaskDO::getStatus, OrderImportTaskStatusEnum.CONSUME_SUCCESS.getStatus())); + orderImportTaskMapper.update(new LambdaUpdateWrapper() + .eq(OrderImportTaskDO::getId, taskId) + .eq(OrderImportTaskDO::getOrganId, organId) + .set(OrderImportTaskDO::getStatus, OrderImportTaskStatusEnum.CONSUME_SUCCESS.getStatus())); } else { String taskNotExistNotify = String.format("%s不存在的导入任务,消费中止", taskId); // 更新状态为消费成功,导入失败 orderImportTaskMapper.update( new LambdaUpdateWrapper() .eq(OrderImportTaskDO::getId, taskId) + .eq(OrderImportTaskDO::getOrganId, organId) .set(OrderImportTaskDO::getStatus, OrderImportTaskStatusEnum.CONSUME_SUCCESS.getStatus()) .set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_FAIL.getStatus()) .set(OrderImportTaskDO::getResult, taskNotExistNotify)