mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-13 21:32:07 +08:00
新增webcad生产单导入:1、cad拆单同步新结构优化适配;2、cad拆单支持基于配置限制板件数量和是否异步拆单,新增异步拆单;
This commit is contained in:
+1
-1
@@ -13,7 +13,7 @@ import org.springframework.context.annotation.Bean;
|
||||
public class ChenfengIDAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public SnowflakeIdWorker3rd ipQueryService() {
|
||||
public SnowflakeIdWorker3rd idWorker() {
|
||||
return new SnowflakeIdWorker3rd();
|
||||
}
|
||||
}
|
||||
+8
@@ -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
@@ -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.
|
||||
|
||||
-141
@@ -1,20 +1,12 @@
|
||||
package com.cf.imes.framework.mq.rabbitmq.config;
|
||||
|
||||
import com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.core.*;
|
||||
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
|
||||
import org.springframework.amqp.support.converter.MessageConverter;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants.*;
|
||||
|
||||
/**
|
||||
* RabbitMQ 消息队列配置类
|
||||
*
|
||||
@@ -31,137 +23,4 @@ public class ChenfengRabbitMQAutoConfiguration {
|
||||
public MessageConverter createMessageConverter() {
|
||||
return new Jackson2JsonMessageConverter();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生产单excel导入交换机、队列、绑定声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public FanoutExchange orderImportDefaultExcelFanoutExchange() {
|
||||
return new FanoutExchange(RabbitMqConstants.ORDER_IMPORT_DEFAULT_EXCEL_EXCHANGE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产单excel导入队列声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public Queue orderImportDefaultExcelQueue() {
|
||||
Map<String, Object> args = new HashMap<>(1);
|
||||
// x-dead-letter-exchange 这里声明当前队列绑定的死信交换机
|
||||
args.put("x-dead-letter-exchange", ORDER_IMPORT_DEAD_LETTER_EXCHANGE);
|
||||
// 设置死信路由键
|
||||
args.put("x-dead-letter-routing-key", ORDER_IMPORT_DEAD_LETTER_ROUTING_KEY);
|
||||
return QueueBuilder.durable(RabbitMqConstants.ORDER_IMPORT_DEFAULT_EXCEL_QUEUE).withArguments(args).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产单excel导入交换机声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public Binding orderImportDefaultExcelBinding() {
|
||||
return BindingBuilder.bind(orderImportDefaultExcelQueue()).to(orderImportDefaultExcelFanoutExchange());
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产单xml导入交换机、队列、绑定声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public FanoutExchange orderImportDefaultXmlFanoutExchange() {
|
||||
return new FanoutExchange(RabbitMqConstants.ORDER_IMPORT_DEFAULT_XML_EXCHANGE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产单xml导入队列声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public Queue orderImportDefaultXmlQueue() {
|
||||
Map<String, Object> args = new HashMap<>(1);
|
||||
// x-dead-letter-exchange 这里声明当前队列绑定的死信交换机
|
||||
args.put("x-dead-letter-exchange", ORDER_IMPORT_DEAD_LETTER_EXCHANGE);
|
||||
// 设置死信路由键
|
||||
args.put("x-dead-letter-routing-key", ORDER_IMPORT_DEAD_LETTER_ROUTING_KEY);
|
||||
return QueueBuilder.durable(RabbitMqConstants.ORDER_IMPORT_DEFAULT_XML_QUEUE).withArguments(args).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产单xml导入交换机声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public Binding orderImportDefaultXmlBinding() {
|
||||
return BindingBuilder.bind(orderImportDefaultXmlQueue()).to(orderImportDefaultXmlFanoutExchange());
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产单导入死信交换机声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public DirectExchange orderImportDeadLetterExchange() {
|
||||
return new DirectExchange(ORDER_IMPORT_DEAD_LETTER_EXCHANGE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产单导入死信队列声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public Queue orderImportDeadLetterQueue() {
|
||||
return new Queue(ORDER_IMPORT_DEAD_LETTER_QUEUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产单导入死信队列、交换机、绑定声明
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public Binding deadLetterBindingA() {
|
||||
return BindingBuilder.bind(orderImportDeadLetterQueue()).to(orderImportDeadLetterExchange()).with(ORDER_IMPORT_DEAD_LETTER_ROUTING_KEY);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 广告状态修改 延迟队列
|
||||
*/
|
||||
@Bean
|
||||
public Queue advertisementUpdateDelayedQueue(){
|
||||
return QueueBuilder.durable(SYSTEM_ADVERTISEMENT_UPDATE_DELAYED_QUEUE).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 广告状态修改 定义延迟交换机
|
||||
*/
|
||||
@Bean
|
||||
public CustomExchange advertisementUpdateDelayExchange() {
|
||||
Map<String, Object> args = new HashMap<>();
|
||||
args.put("x-delayed-type", "direct");
|
||||
return new CustomExchange(SYSTEM_ADVERTISEMENT_UPDATE_DELAYED_EXCHANGE, "x-delayed-message", true, false, args);
|
||||
}
|
||||
|
||||
/**
|
||||
* 广告状态修改 队列与交换机绑定
|
||||
*/
|
||||
@Bean
|
||||
public Binding advertisementUpdateQueueABindingX(@Qualifier("advertisementUpdateDelayedQueue") Queue queue,
|
||||
@Qualifier("advertisementUpdateDelayExchange") CustomExchange delayedExchange){
|
||||
return BindingBuilder.bind(queue)
|
||||
.to(delayedExchange)
|
||||
.with(SYSTEM_ADVERTISEMENT_UPDATE_DELAYED_ROUTING_KEY)
|
||||
.noargs();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+11
@@ -27,6 +27,17 @@ public class RabbitMqConstants {
|
||||
*/
|
||||
public static final String ORDER_IMPORT_DEFAULT_XML_QUEUE = "order_import_default_xml_queue";
|
||||
|
||||
|
||||
/**
|
||||
* webcad拆单交换机
|
||||
*/
|
||||
public static final String ORDER_IMPORT_WEBCAD_EXCHANGE = "order_import_webcad_exchange";
|
||||
|
||||
/**
|
||||
* webcad拆单队列
|
||||
*/
|
||||
public static final String ORDER_IMPORT_WEBCAD_QUEUE = "order_import_webcad_queue_%s";
|
||||
|
||||
/**
|
||||
* 生产单导入死信交换机
|
||||
*/
|
||||
|
||||
+2
@@ -29,6 +29,8 @@ public class WebFrameworkUtils {
|
||||
|
||||
public static final String HEADER_ORGAN_ID = "organ-id";
|
||||
|
||||
public static final String HEADER_PEEK = "peek";
|
||||
|
||||
/**
|
||||
* 终端的 Header
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user