cad拆单多租户信息透传异常修复

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