Marko552 3 gadi atpakaļ
vecāks
revīzija
281926eb9f

+ 10 - 4
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/config/RabbitmqConfig.java

@@ -15,6 +15,9 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import static com.abi.qms.platform.infrastructure.mq.TableStoreBatchInsertConsumer.TABLE_STORE_BATCH_INSERT_QUEUE;
+import static com.abi.qms.platform.infrastructure.mq.TableStoreBatchUpdateConsumer.TABLE_STORE_BATCH_UPDATE_QUEUE;
+
 /**
  * rabbitmq配置
  *
@@ -25,14 +28,17 @@ import org.springframework.context.annotation.Configuration;
 @Slf4j
 public class RabbitmqConfig {
 
-	@Bean(name = "qms_table_store_queue")
+	@Value("${spring.profiles.active:local}")
+	private String env;
+
+	@Bean(name = (TABLE_STORE_BATCH_INSERT_QUEUE+"_${spring.profiles.active:local}"))
 	public Queue declareTableBatchInsertQueue() {
-		return new Queue(TableStoreBatchInsertConsumer.TABLE_STORE_BATCH_INSERT_QUEUE);
+		return new Queue(TABLE_STORE_BATCH_INSERT_QUEUE+"_"+env);
 	}
 
-	@Bean(name = "qms_table_store_box_mapping_queue")
+	@Bean(name = (TABLE_STORE_BATCH_UPDATE_QUEUE+"_${spring.profiles.active:local}"))
 	public Queue declareTableBatchUpdateQueue() {
-		return new Queue(TableStoreBatchUpdateConsumer.TABLE_STORE_BATCH_UPDATE_QUEUE);
+		return new Queue(TABLE_STORE_BATCH_UPDATE_QUEUE+"_"+env);
 	}
 
 	@Value("${spring.rabbitmq.addresses}")

+ 5 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/mq/TableStoreBatchInsertConsumer.java

@@ -12,6 +12,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitHandler;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -28,14 +29,17 @@ import java.util.List;
 @Component
 public class TableStoreBatchInsertConsumer{
 
+
+
     public static final String TABLE_STORE_BATCH_INSERT_QUEUE = "qms_table_store_queue";
 
     @Autowired
     private TableStorePlusUtils tableStorePlusUtils;
 
+
     @RabbitHandler
     @SneakyThrows
-    @RabbitListener(queues = TABLE_STORE_BATCH_INSERT_QUEUE,ackMode = "AUTO",concurrency = "10-50")
+    @RabbitListener(queues = TABLE_STORE_BATCH_INSERT_QUEUE+"_${spring.profiles.active:local}",ackMode = "AUTO",concurrency = "10-50")
     public void onMessage(Message message){
         try {
             String messageInfo = new String(message.getBody(), "utf-8");

+ 1 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/mq/TableStoreBatchUpdateConsumer.java

@@ -34,7 +34,7 @@ public class TableStoreBatchUpdateConsumer {
 
     @RabbitHandler
     @SneakyThrows
-    @RabbitListener(queues = TABLE_STORE_BATCH_UPDATE_QUEUE,ackMode = "AUTO",concurrency = "10-50")
+    @RabbitListener(queues = TABLE_STORE_BATCH_UPDATE_QUEUE+"_${spring.profiles.active:local}",ackMode = "AUTO",concurrency = "10-50")
     public void onMessage(Message message){
         try {
             String messageInfo = new String(message.getBody(), "utf-8");

+ 5 - 9
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/util/AsyncTableStoreUtil.java

@@ -4,9 +4,7 @@ import com.abi.qms.platform.dao.tablestore.entity.QrCode;
 import com.abi.qms.platform.infrastructure.mq.TableStoreBatchInsertConsumer;
 import com.abi.qms.platform.infrastructure.mq.TableStoreBatchUpdateConsumer;
 import lombok.Data;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.io.Serializable;
@@ -20,8 +18,7 @@ import java.util.List;
 public class AsyncTableStoreUtil {
 
     @Autowired
-    @Qualifier("qmsRabbitTemplate")
-    private RabbitTemplate amqpTemplate;
+    private RabbitMqUtils rabbitMqUtils;
 
     /**
      * 批量新增tableStore,码表
@@ -32,10 +29,10 @@ public class AsyncTableStoreUtil {
         int leftover = entityList.size() % 200;
         for (int i = 0; i < repeatTimes+1; i++) {
             if (i == repeatTimes){
-                amqpTemplate.convertAndSend(TableStoreBatchInsertConsumer.TABLE_STORE_BATCH_INSERT_QUEUE, entityList.subList(i*200,i*200+leftover));
+                rabbitMqUtils.sendMessage(TableStoreBatchInsertConsumer.TABLE_STORE_BATCH_INSERT_QUEUE,entityList.subList(i*200,i*200+leftover));
                 continue;
             }
-            amqpTemplate.convertAndSend(TableStoreBatchInsertConsumer.TABLE_STORE_BATCH_INSERT_QUEUE, entityList.subList(i*200,i*200+200));
+            rabbitMqUtils.sendMessage(TableStoreBatchInsertConsumer.TABLE_STORE_BATCH_INSERT_QUEUE,entityList.subList(i*200,i*200+200));
         }
     }
 
@@ -54,15 +51,14 @@ public class AsyncTableStoreUtil {
                 UpdateRowBean updateRowBean = new UpdateRowBean();
                 updateRowBean.setEntityList(entityList.subList(i*200,i*200+leftover));
                 updateRowBean.setUpdateColumnFieldName(updateColumnFieldName);
-
-                amqpTemplate.convertAndSend(TableStoreBatchUpdateConsumer.TABLE_STORE_BATCH_UPDATE_QUEUE, updateRowBean);
+                rabbitMqUtils.sendMessage(TableStoreBatchUpdateConsumer.TABLE_STORE_BATCH_UPDATE_QUEUE,updateRowBean);
                 continue;
             }
 
             UpdateRowBean updateRowBean = new UpdateRowBean();
             updateRowBean.setEntityList(entityList.subList(i*200,i*200+200));
             updateRowBean.setUpdateColumnFieldName(updateColumnFieldName);
-            amqpTemplate.convertAndSend(TableStoreBatchUpdateConsumer.TABLE_STORE_BATCH_UPDATE_QUEUE, updateRowBean);
+            rabbitMqUtils.sendMessage(TableStoreBatchUpdateConsumer.TABLE_STORE_BATCH_UPDATE_QUEUE,updateRowBean);
         }
     }
 

+ 38 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/util/RabbitMqUtils.java

@@ -0,0 +1,38 @@
+package com.abi.qms.platform.infrastructure.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.text.MessageFormat;
+
+/**
+ * @className: com.abi.qms.platform.infrastructure.util-> RabbitMqUtils
+ * @description:
+ * @author: Marko.W
+ * @createDate: 2021-06-29 21:09
+ * @version: 1.0
+ * @todo:
+ */
+@Component
+@Slf4j
+public class RabbitMqUtils {
+
+    @Autowired
+    @Qualifier("qmsRabbitTemplate")
+    private RabbitTemplate amqpTemplate;
+
+    @Value("${spring.profiles.active:local}")
+    private String env;
+
+
+    public void sendMessage(String routingKey,Object o){
+        amqpTemplate.convertAndSend(MessageFormat.format("{0}_{1}",routingKey,env),o);
+    }
+
+
+
+}

+ 16 - 14
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/GenerateCodeServiceImpl.java

@@ -23,6 +23,8 @@ import com.abi.task.common.api.exception.BusinessException;
 import com.abi.task.common.utils.PojoConverterUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import lombok.extern.slf4j.Slf4j;
 import net.lingala.zip4j.core.ZipFile;
 import net.lingala.zip4j.exception.ZipException;
@@ -385,27 +387,26 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
         }
 
         //生成码数据
-        final List<QrData> qrDataList = new LinkedList<>();
+        final List<QrData> qrDataList = Lists.newLinkedList();
         Long qrIndex = getQrIndex();
 
         // 计算还需生成的数量
         long needGenerateNumber = qrNumber;
 
         // 用Set存放不重复的码
-        HashSet<String> uniqueSet = new HashSet<>();
+        HashSet<String> uniqueSet = Sets.newHashSet();
         // 生成码要用的参数
-        Map<String, Object> paramMap = new HashMap<>();
+        Map<String, Object> paramMap = Maps.newHashMap();
         // 码
         StringBuilder codeSb = new StringBuilder();
-
-        for (int i = 0; i < needGenerateNumber; i++) {
-            QrData qrData = new QrData()
-                    .setQrRepertoryId(qrRepertoryId)
-                    .setBatchNumber(batchNumber)
-                    .setQrRepertoryType(QrRepertoryTypeEnum.SYSTEM_GENERATE.getCode())
-                    .setCreateTime(LocalDateTime.now());
-
-            List<QrInnerData> qrInnerDataList = new LinkedList<>();
+        QrData qrData = new QrData()
+                .setQrRepertoryId(qrRepertoryId)
+                .setBatchNumber(batchNumber)
+                .setQrRepertoryType(QrRepertoryTypeEnum.SYSTEM_GENERATE.getCode())
+                .setCreateTime(LocalDateTime.now());
+        try {
+            for (int i = 0; i < needGenerateNumber; i++) {
+            List<QrInnerData> qrInnerDataList = Lists.newLinkedList();
             //箱子码幅面
             for (int a = 0; a < boxCodeFormat.getFormatNumber(); a++) {
                 for (int j = 0; j < qrRepertoryColumnList.size(); j++) {
@@ -414,7 +415,7 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
                     // 非clone列,设置code
                     String code = buildUniqueCode(uniqueSet, qrRepertoryColumn, codeSb, paramMap, qrRepertorySerialNumberMap, 0);
                     if (code == null) {
-                        throw new RuntimeException("生成码失败,重复生成码次数超过" + REPEAT_BUILD_CODE_TIMES + "次");
+                        throw new BusinessException("生成码失败,重复生成码次数超过" + REPEAT_BUILD_CODE_TIMES + "次");
                     }
                     // 判断拆分数量是否为空
                     int splitNum = 0;
@@ -427,15 +428,16 @@ public class GenerateCodeServiceImpl implements GenerateCodeService {
                     qrInnerData.setCodeIndex(++qrIndex);
                     qrInnerData.setSplitNum(splitNum);
                     qrInnerDataList.add(qrInnerData);
+                    qrInnerData = null;
                 }
             }
             qrData.setInnerDataList(qrInnerDataList);
             qrDataList.add(qrData);
+            qrData.setInnerDataList(null);
         }
         //保存index
         setQrIndex(qrIndex);
 
-        try {
             return qrDataList;
         } catch (Exception e) {
             log.error("封装码失败", e);