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 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<OrderImportTaskDO>()
.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<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 {
String taskNotExistNotify = String.format("%s不存在的导入任务,消费中止", taskId);
// 更新状态为消费成功,导入失败
orderImportTaskMapper.update(
new LambdaUpdateWrapper<OrderImportTaskDO>()
.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)