新增webcad生产单导入:1、cad拆单同步新结构优化适配;2、cad拆单支持基于配置限制板件数量和是否异步拆单,新增异步拆单;

This commit is contained in:
gaoqr
2025-05-13 17:32:39 +08:00
parent b9e7481bdf
commit 341fd485b3
31 changed files with 3485 additions and 1393 deletions
@@ -1,6 +1,8 @@
package com.cf.imes.framework.organ.core.mq.rabbitmq;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.clients.producer.ProducerInterceptor;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message;
@@ -8,6 +10,7 @@ import org.springframework.amqp.core.MessagePostProcessor;
import org.springframework.messaging.handler.invocation.InvocableHandlerMethod;
import static com.cf.imes.framework.web.core.util.WebFrameworkUtils.HEADER_ORGAN_ID;
import static com.cf.imes.framework.web.core.util.WebFrameworkUtils.HEADER_PEEK;
/**
* RabbitMQ 消息队列的多组织 {@link ProducerInterceptor} 实现类
@@ -25,6 +28,11 @@ public class OrganRabbitMQMessagePostProcessor implements MessagePostProcessor {
if (organId != null) {
message.getMessageProperties().getHeaders().put(HEADER_ORGAN_ID, organId);
}
String peek = DynamicDataSourceContextHolder.peek();
if (StringUtils.isNotEmpty(peek)) {
message.getMessageProperties().getHeaders().put(HEADER_PEEK, peek);
}
return message;
}
@@ -16,6 +16,8 @@
package org.springframework.messaging.handler.invocation;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.framework.organ.core.util.OrganUtils;
import org.springframework.core.DefaultParameterNameDiscoverer;
@@ -33,6 +35,7 @@ import java.lang.reflect.Type;
import java.util.Arrays;
import static com.cf.imes.framework.web.core.util.WebFrameworkUtils.HEADER_ORGAN_ID;
import static com.cf.imes.framework.web.core.util.WebFrameworkUtils.HEADER_PEEK;
/**
* Extension of {@link HandlerMethod} that invokes the underlying method with
@@ -122,6 +125,7 @@ public class InvocableHandlerMethod extends HandlerMethod {
// 注意:如下是本类的改动点!!!
// 情况一:无组织编号的情况
Long organId= parseorganId(message);
parsePeek(message);
if (organId == null) {
return doInvoke(args);
}
@@ -149,6 +153,18 @@ public class InvocableHandlerMethod extends HandlerMethod {
throw new IllegalArgumentException("未知的数据类型:" + organId);
}
/**
* 头部带有多数据源,透传
*
* @param message
*/
private void parsePeek(Message<?> message) {
Object peek = message.getHeaders().get(HEADER_PEEK);
if (ObjectUtil.isNotNull(peek)) {
DynamicDataSourceContextHolder.push(peek.toString());
}
}
/**
* Get the method argument values for the current message, checking the provided
* argument values and falling back to the configured argument resolvers.