From b5dfa7fd6f837d206c3ef78022707936ab16e2df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Fri, 4 Sep 2020 10:49:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=8D=95=E5=8F=B7=E7=94=9F=E6=88=90?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/SysOrderNoRecordQueueReceiver.java | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysOrderNoRecordQueueReceiver.java diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysOrderNoRecordQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysOrderNoRecordQueueReceiver.java new file mode 100644 index 0000000..063e434 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysOrderNoRecordQueueReceiver.java @@ -0,0 +1,70 @@ +package cn.estsh.i3plus.core.apiservice.mq; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysOrderNoRecordService; +import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; +import cn.estsh.i3plus.platform.common.util.PlatformConstWords; +import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRecord; +import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule; +import com.fasterxml.jackson.core.type.TypeReference; +import com.rabbitmq.client.Channel; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.QUEUE_IMPP_ORDER_NO_RECORD; + +/** + * @Description : 单号生成记录 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-09-03 22:15 + * @Modify: + **/ +@ConditionalOnExpression("'${impp.mq.queue.order-record:true}' == 'true'") +@Component +public class SysOrderNoRecordQueueReceiver { + + private static final Logger LOGGER = LoggerFactory.getLogger(SysOrderNoRecordQueueReceiver.class); + + @Autowired + private ISysOrderNoRecordService orderNoRecordService; + + @Bean + public Queue getQueueImppOrderNoRecord(){ + return new Queue(PlatformConstWords.QUEUE_IMPP_ORDER_NO_RECORD); + } + + @RabbitListener(queues = QUEUE_IMPP_ORDER_NO_RECORD) + public void processImppMessage(String orderNoListStr, Channel channel, Message message) { + try { + List orderNoRuleList = JsonUtilTool.decode(orderNoListStr, new TypeReference>(){}); + if (CollectionUtils.isNotEmpty(orderNoRuleList)) { + List orderNoRecordList = new ArrayList<>(); + orderNoRuleList.forEach(ds -> orderNoRecordList.add(new SysOrderNoRecord(ds.getOrderNoRuleCode(), ds.getOrderNo()))); + orderNoRecordService.saveBatch(orderNoRecordList); + } + }catch (Exception e){ + LOGGER.error("单号生成记录异常", e); + }finally { + try { + channel.basicAck(message.getMessageProperties().getDeliveryTag(),false); + LOGGER.info("[MQ ACK] Tag :{} Completed successfully",message.getMessageProperties().getDeliveryTag()); + } catch (IOException e) { + LOGGER.error("[MQ ERROR] MQ Ack Error Message:{}",e.getMessage()); + e.printStackTrace(); + } + } + } + +}