Browse Source

配置修改 以及适配退单撤单电子税单

lihuiming 3 năm trước cách đây
mục cha
commit
928682b2a8

+ 3 - 0
src/main/java/com/emato/file/tunnel/TunnelApplication.java

@@ -1,5 +1,6 @@
 package com.emato.file.tunnel;
 
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
@@ -10,10 +11,12 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 @EnableConfigurationProperties
 @ConfigurationPropertiesScan
 @EnableScheduling
+@Slf4j
 public class TunnelApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(TunnelApplication.class, args);
+        log.info("----- 报文机程序启动成功 -----");
     }
 
 }

+ 37 - 0
src/main/java/com/emato/file/tunnel/common/constant/MessageTypeEnum.java

@@ -0,0 +1,37 @@
+package com.emato.file.tunnel.common.constant;
+
+/**
+ * <p></p>
+ *
+ * @author : lhm
+ * @date : 2021-10-01 15:45
+ **/
+public enum  MessageTypeEnum {
+
+
+    CEB621("CEB621"),
+    CEB623("CEB623"),
+    CEB625("CEB625"),
+    CEB311("CEB311"),
+    // 回执类型
+    CEB622("CEB622"),
+    CEB624("CEB624"),
+    CEB626("CEB626"),
+    CEB312("CEB312"),
+    CEB816("CEB816"),
+
+    // 未知类型
+    UNKNOWN("unknown")
+    ;
+
+
+    private String type;
+
+    public String getType() {
+        return type;
+    }
+
+    private MessageTypeEnum(String type){
+        this.type = type;
+    }
+}

+ 0 - 7
src/main/java/com/emato/file/tunnel/common/constant/ResultCodeEnum.java

@@ -26,16 +26,9 @@ public enum ResultCodeEnum {
         return code;
     }
 
-    public void setCode(String code) {
-        this.code = code;
-    }
-
     public String getMsg() {
         return msg;
     }
 
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
 
 }

+ 125 - 13
src/main/java/com/emato/file/tunnel/config/RabbitMQConfig.java

@@ -78,7 +78,13 @@ public class RabbitMQConfig {
         RabbitListenerContainerFactory<?> rabbitListenerContainerFactory = rabbitListenerContainerFactory(connectionFactory);
         SimpleMessageListenerContainer listenerContainer = (SimpleMessageListenerContainer) rabbitListenerContainerFactory.createListenerContainer();
 
-        listenerContainer.setQueueNames(rabbitMQProperties.getQ_normal_csp_to_tunnel_report());
+        // 支持621、623、625、311的上报
+        listenerContainer.setQueueNames(
+                rabbitMQProperties.getQ_normal_csp_to_tunnel_report_311(),
+                rabbitMQProperties.getQ_normal_csp_to_tunnel_report_621(),
+
+                rabbitMQProperties.getQ_normal_csp_to_tunnel_report_621()
+        );
         listenerContainer.setupMessageListener(messageListener(cPortProperties, clearRabbitTemplate, rabbitMQProperties));
 
         return listenerContainer;
@@ -96,11 +102,23 @@ public class RabbitMQConfig {
         rabbitAdmin.declareExchange(reportDirectExchange());
         rabbitAdmin.declareExchange(receiptDirectExchange());
 
-        rabbitAdmin.declareQueue(reportQueue());
-        rabbitAdmin.declareQueue(receiptQueue());
+        rabbitAdmin.declareQueue(ceb621ReportQueue());
+        rabbitAdmin.declareQueue(ceb311ReportQueue());
+
+        rabbitAdmin.declareQueue(ceb621ReceiptQueue());
+        rabbitAdmin.declareQueue(ceb311ReceiptQueue());
+        rabbitAdmin.declareQueue(ceb623ReceiptQueue());
+        rabbitAdmin.declareQueue(ceb625ReceiptQueue());
+        rabbitAdmin.declareQueue(ceb816ReceiptQueue());
+
+        rabbitAdmin.declareBinding(ceb621ReportBinding());
+        rabbitAdmin.declareBinding(ceb311ReportBinding());
 
-        rabbitAdmin.declareBinding(receiptBinding());
-        rabbitAdmin.declareBinding(reportBinding());
+        rabbitAdmin.declareBinding(ceb621ReceiptBinding());
+        rabbitAdmin.declareBinding(ceb311ReceiptBinding());
+        rabbitAdmin.declareBinding(ceb623ReceiptBinding());
+        rabbitAdmin.declareBinding(ceb625ReceiptBinding());
+        rabbitAdmin.declareBinding(ceb816ReceiptBinding());
 
         return rabbitAdmin;
     }
@@ -122,15 +140,24 @@ public class RabbitMQConfig {
     }
 
     @Bean
-    public Queue receiptQueue () {
-        return new Queue(rabbitMQProperties.getQ_normal_tunnel_to_csp_receipt());
+    public Queue ceb621ReceiptQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_tunnel_to_csp_receipt_621());
+    }
+
+    @Bean
+    public Binding ceb621ReceiptBinding () {
+        return BindingBuilder.bind(ceb621ReceiptQueue()).to(receiptDirectExchange()).with(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_621());
     }
 
     @Bean
-    public Binding receiptBinding () {
-        return BindingBuilder.bind(receiptQueue()).to(receiptDirectExchange()).with(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt());
+    public Queue ceb311ReceiptQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_tunnel_to_csp_receipt_311());
     }
 
+    @Bean
+    public Binding ceb311ReceiptBinding () {
+        return BindingBuilder.bind(ceb311ReceiptQueue()).to(receiptDirectExchange()).with(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_311());
+    }
     /* **************************************** 回执队列相关配置完毕 ******************************************* */
 
 
@@ -151,13 +178,23 @@ public class RabbitMQConfig {
     }
 
     @Bean
-    public Queue reportQueue () {
-        return new Queue(rabbitMQProperties.getQ_normal_csp_to_tunnel_report());
+    public Queue ceb621ReportQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_csp_to_tunnel_report_621());
+    }
+
+    @Bean
+    public Binding ceb621ReportBinding () {
+        return BindingBuilder.bind(ceb621ReportQueue()).to(reportDirectExchange()).with(rabbitMQProperties.getK_normal_csp_to_tunnel_report_621());
     }
 
     @Bean
-    public Binding reportBinding () {
-        return BindingBuilder.bind(reportQueue()).to(reportDirectExchange()).with(rabbitMQProperties.getK_normal_csp_to_tunnel_report());
+    public Queue ceb311ReportQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_csp_to_tunnel_report_311());
+    }
+
+    @Bean
+    public Binding ceb311ReportBinding () {
+        return BindingBuilder.bind(ceb621ReportQueue()).to(reportDirectExchange()).with(rabbitMQProperties.getK_normal_csp_to_tunnel_report_311());
     }
 
     /* **************************************** 上报报文相关配置完成 ******************************************* */
@@ -172,4 +209,79 @@ public class RabbitMQConfig {
         return rabbitTemplate;
     }
 
+
+    /* **************************************** 其他mq配置 ******************************************* */
+
+    @Bean
+    public Queue ceb623ReceiptQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_tunnel_to_csp_receipt_623());
+    }
+    @Bean
+    public Queue ceb623ReportQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_csp_to_tunnel_report_623());
+    }
+
+    @Bean
+    public Queue ceb625ReceiptQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_tunnel_to_csp_receipt_625());
+    }
+    @Bean
+    public Queue ceb625ReportQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_csp_to_tunnel_report_625());
+    }
+
+    @Bean
+    public Queue ceb816ReceiptQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_tunnel_to_csp_receipt_816());
+    }
+    @Bean
+    public Queue ceb816ReportQueue () {
+        return new Queue(rabbitMQProperties.getQ_normal_csp_to_tunnel_report_816());
+    }
+
+    @Bean
+    public Binding ceb623ReceiptBinding () {
+        return BindingBuilder
+                .bind(ceb623ReceiptQueue())
+                .to(receiptDirectExchange())
+                .with(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_623());
+    }
+    @Bean
+    public Binding ceb623ReportBinding () {
+        return BindingBuilder
+                .bind(ceb623ReportQueue())
+                .to(reportDirectExchange())
+                .with(rabbitMQProperties.getK_normal_csp_to_tunnel_report_623());
+    }
+
+    @Bean
+    public Binding ceb625ReceiptBinding () {
+        return BindingBuilder
+                .bind(ceb625ReceiptQueue())
+                .to(receiptDirectExchange())
+                .with(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_625());
+    }
+    @Bean
+    public Binding ceb625ReportBinding () {
+        return BindingBuilder
+                .bind(ceb625ReportQueue())
+                .to(reportDirectExchange())
+                .with(rabbitMQProperties.getK_normal_csp_to_tunnel_report_625());
+    }
+
+    @Bean
+    public Binding ceb816ReceiptBinding () {
+        return BindingBuilder
+                .bind(ceb816ReceiptQueue())
+                .to(receiptDirectExchange())
+                .with(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_816());
+    }
+    @Bean
+    public Binding ceb816ReportBinding () {
+        return BindingBuilder
+                .bind(ceb816ReportQueue())
+                .to(reportDirectExchange())
+                .with(rabbitMQProperties.getK_normal_csp_to_tunnel_report_816());
+    }
+
 }

+ 0 - 2
src/main/java/com/emato/file/tunnel/config/properties/CPortProperties.java

@@ -19,8 +19,6 @@ public class CPortProperties {
 
     private Integer scanHandleSize;
 
-    private String receiptType;
-
     private Boolean ceb621;
 
 }

+ 82 - 12
src/main/java/com/emato/file/tunnel/config/properties/RabbitMQProperties.java

@@ -16,25 +16,95 @@ import org.springframework.stereotype.Component;
 @Data
 public class RabbitMQProperties {
 
+    @Value("${e.normal.tunnel.to.csp.receipt}")
+    private String e_normal_tunnel_to_csp_receipt;
+
+    @Value("${e.normal.csp.to.tunnel.report}")
+    private String e_normal_csp_to_tunnel_report;
+
     /**
      * 上报的队列、交换机、路由键
      */
-    @Value("${q.normal.csp.to.tunnel.report}")
-    private String q_normal_csp_to_tunnel_report;
-    @Value("${e.normal.csp.to.tunnel.report}")
-    private String e_normal_csp_to_tunnel_report;
-    @Value("${k.normal.csp.to.tunnel.report}")
-    private String k_normal_csp_to_tunnel_report;
+    @Value("${q.normal.csp.to.tunnel.report.621}")
+    private String q_normal_csp_to_tunnel_report_621;
+    @Value("${k.normal.csp.to.tunnel.report.621}")
+    private String k_normal_csp_to_tunnel_report_621;
 
     /**
      * 回执的队列、交换机、路由键
      */
-    @Value("${q.normal.tunnel.to.csp.receipt}")
-    private String q_normal_tunnel_to_csp_receipt;
-    @Value("${e.normal.tunnel.to.csp.receipt}")
-    private String e_normal_tunnel_to_csp_receipt;
-    @Value("${k.normal.tunnel.to.csp.receipt}")
-    private String k_normal_tunnel_to_csp_receipt;
+    @Value("${q.normal.tunnel.to.csp.receipt.621}")
+    private String q_normal_tunnel_to_csp_receipt_621;
+    @Value("${k.normal.tunnel.to.csp.receipt.621}")
+    private String k_normal_tunnel_to_csp_receipt_621;
+
+    /**
+     * 上报的队列、交换机、路由键
+     */
+    @Value("${q.normal.csp.to.tunnel.report.311}")
+    private String q_normal_csp_to_tunnel_report_311;
+    @Value("${k.normal.csp.to.tunnel.report.311}")
+    private String k_normal_csp_to_tunnel_report_311;
+
+    /**
+     * 回执的队列、交换机、路由键
+     */
+    @Value("${q.normal.tunnel.to.csp.receipt.311}")
+    private String q_normal_tunnel_to_csp_receipt_311;
+    @Value("${k.normal.tunnel.to.csp.receipt.311}")
+    private String k_normal_tunnel_to_csp_receipt_311;
+
+    /**
+     * 撤单回执
+     */
+    @Value("${q.normal.tunnel.to.csp.receipt.623}")
+    private String q_normal_tunnel_to_csp_receipt_623;
+    @Value("${k.normal.tunnel.to.csp.receipt.623}")
+    private String k_normal_tunnel_to_csp_receipt_623;
+
+    /**
+     * 退单回执
+     */
+    @Value("${q.normal.tunnel.to.csp.receipt.625}")
+    private String q_normal_tunnel_to_csp_receipt_625;
+    @Value("${k.normal.tunnel.to.csp.receipt.625}")
+    private String k_normal_tunnel_to_csp_receipt_625;
+
+    /**
+     * 电子税单回执
+     */
+    @Value("${q.normal.tunnel.to.csp.receipt.816}")
+    private String q_normal_tunnel_to_csp_receipt_816;
+    @Value("${k.normal.tunnel.to.csp.receipt.816}")
+    private String k_normal_tunnel_to_csp_receipt_816;
+
+
+
+
+    /**
+     * 撤单上报
+     */
+    @Value("${q.normal.csp.to.tunnel.report.623}")
+    private String q_normal_csp_to_tunnel_report_623;
+    @Value("${k.normal.csp.to.tunnel.report.623}")
+    private String k_normal_csp_to_tunnel_report_623;
+
+    /**
+     * 退单上报
+     */
+    @Value("${q.normal.csp.to.tunnel.report.625}")
+    private String q_normal_csp_to_tunnel_report_625;
+    @Value("${k.normal.csp.to.tunnel.report.625}")
+    private String k_normal_csp_to_tunnel_report_625;
+
+    /**
+     * 电子税单上报
+     */
+    @Value("${q.normal.csp.to.tunnel.report.816}")
+    private String q_normal_csp_to_tunnel_report_816;
+    @Value("${k.normal.csp.to.tunnel.report.816}")
+    private String k_normal_csp_to_tunnel_report_816;
+
 
     /**
      * 清关时效性mq相关配置

+ 1 - 1
src/main/java/com/emato/file/tunnel/listener/ReportMessageListener.java

@@ -71,7 +71,7 @@ public class ReportMessageListener implements MessageListener, ChannelAwareMessa
             File file = FileUtil.writeString(content, path, StandardCharsets.UTF_8);
             channel.basicAck(tag, false);
 
-            // 写入文件成功, 发送清关时效性: 报文到达深关通目录时间
+            // 写入文件成功, 只有清单才发送, 发送清关时效性: 报文到达深关通目录时间
             if (cPortProperties.getCeb621()) {
                 sendClearance(orderSn);
             }

+ 62 - 0
src/main/java/com/emato/file/tunnel/router/ReceiptMessageRouter.java

@@ -0,0 +1,62 @@
+package com.emato.file.tunnel.router;
+
+import com.emato.file.tunnel.common.constant.MessageTypeEnum;
+import com.emato.file.tunnel.config.properties.RabbitMQProperties;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+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;
+
+/**
+ * <p></p>
+ * 路由回执报文到对应的队列
+ * @author : lhm
+ * @date : 2021-10-01 15:40
+ **/
+@Component
+@Slf4j
+public class ReceiptMessageRouter {
+
+    @Autowired
+    RabbitMQProperties rabbitMQProperties;
+
+    @Autowired
+    @Qualifier("receiptRabbitTemplate")
+    RabbitTemplate receiptRabbitTemplate;
+
+    /**
+     * 根据回执文件名发送到队列
+     * @param messageTypeEnum      回执类型
+     * @param message   回执内容
+     * @param correlationData correlationData
+     * @return          是否路由正确
+     */
+    public Boolean router (MessageTypeEnum messageTypeEnum, Object message, CorrelationData correlationData) {
+
+        switch (messageTypeEnum) {
+            case CEB312:
+                receiptRabbitTemplate.convertAndSend(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_311(), message, correlationData);
+                break;
+            case CEB622:
+                receiptRabbitTemplate.convertAndSend(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_621(), message, correlationData);
+                break;
+            case CEB624:
+                receiptRabbitTemplate.convertAndSend(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_623(), message, correlationData);
+                break;
+            case CEB626:
+                receiptRabbitTemplate.convertAndSend(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_625(), message, correlationData);
+                break;
+            case CEB816:
+                receiptRabbitTemplate.convertAndSend(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt_816(), message, correlationData);
+                break;
+            case UNKNOWN:
+                log.error("----- 未知的消息类型, 消息体: {} -----", message);
+            default:
+                return false;
+        }
+        return true;
+    }
+
+}

+ 59 - 10
src/main/java/com/emato/file/tunnel/scheduler/ScanPullDirectoryTask.java

@@ -5,8 +5,10 @@ import cn.hutool.core.exceptions.UtilException;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.XmlUtil;
 import cn.hutool.json.JSONUtil;
+import com.emato.file.tunnel.common.constant.MessageTypeEnum;
 import com.emato.file.tunnel.config.properties.CPortProperties;
 import com.emato.file.tunnel.config.properties.RabbitMQProperties;
+import com.emato.file.tunnel.router.ReceiptMessageRouter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.connection.CorrelationData;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -19,6 +21,7 @@ import org.w3c.dom.Document;
 import javax.annotation.PostConstruct;
 import java.io.*;
 import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -37,10 +40,9 @@ public class ScanPullDirectoryTask {
     private CPortProperties cPortProperties;
 
     @Autowired
-    private RabbitTemplate receiptRabbitTemplate;
+    private ReceiptMessageRouter receiptMessageRouter;
 
-    @Autowired
-    private RabbitMQProperties rabbitMQProperties;
+    private List<String> messageTypeList = Arrays.stream(MessageTypeEnum.values()).map(MessageTypeEnum::getType).collect(Collectors.toList());
 
     @Scheduled(fixedRate = 3000)
     public void scanDirectory() {
@@ -57,10 +59,23 @@ public class ScanPullDirectoryTask {
             // 获取回执目录里特定报文的文件名
             List<String> pullFilePaths = fileNames.parallelStream()
                     .map(fileName -> pullDir + "\\" + fileName)
-                    // 过滤出xml格式的和对应回执类型的文件, 回执类型在application.properties可配置
-                    .filter(fileName -> fileName.indexOf("xml") > 0 && fileName.contains(cPortProperties.getReceiptType()))
+                    // 过滤出xml格式的
+                    .filter(fileName -> fileName.indexOf("xml") > 0)
+                    // 过滤出对应回执类型的文件
+                    .filter(fileName -> {
+                        for (String s : messageTypeList) {
+                            boolean b = fileName.contains(s);
+                            if (b) {
+                                return true;
+                            }
+                        }
+                        return false;
+                    })
                     .collect(Collectors.toList());
 
+            if (CollectionUtils.isEmpty(pullFilePaths)) {
+                return;
+            }
             readMessageFile(pullFilePaths, pullDir);
 
             int size = CollectionUtils.isEmpty(pullFilePaths) ? 0 : pullFilePaths.size();
@@ -87,7 +102,7 @@ public class ScanPullDirectoryTask {
             if (file.exists()) {
                 try (InputStream inputStream = new FileInputStream(file)) {
                     Document document = XmlUtil.readXML(inputStream);
-                    boolean delete = file.delete();
+                    boolean deleted;
                     String content = XmlUtil.format(document);
                     // 报文回执信息发送给csp
                     map.put("fileName", fileName);
@@ -95,10 +110,20 @@ public class ScanPullDirectoryTask {
                     Object message = JSONUtil.toJsonStr(map);
                     CorrelationData correlationData = new CorrelationData();
                     correlationData.setId(fileName);
-                    receiptRabbitTemplate.convertAndSend(rabbitMQProperties.getK_normal_tunnel_to_csp_receipt(), message, correlationData);
-                    if (!delete) {
-                        log.error("----- 扫描报文目录, 文件: {}, 删除失败! -----", fileName);
+
+                    MessageTypeEnum messageTypeEnum = matchType(fileName);
+                    // 根据回执文件名发送不同队列
+                    Boolean bool = receiptMessageRouter.router(messageTypeEnum, message, correlationData);
+                    // 未知的文件类型将不会进行删除
+                    if (!bool) {
+                        log.error("----- 未知的回执消息文件类型, 文件名: {}, 文件内容: {} -----", fileName, content);
+                    } else {
+                        deleted = file.delete();
+                        if (!deleted) {
+                            log.error("----- 扫描报文目录, 文件: {}, 删除失败! -----", fileName);
+                        }
                     }
+
                 } catch (UtilException e) {
                     log.error("----- 扫描报文目录, 解析该文件: {}, 出现错误: {} -----", fileName, e.getMessage());
                 } catch (FileNotFoundException e) {
@@ -110,7 +135,31 @@ public class ScanPullDirectoryTask {
         });
     }
 
-//    @Scheduled(fixedRate = 10000)
+    /**
+     * 根据回执文件名匹配消息类型
+     * @param fileName  回执文件名
+     * @return          消息类型
+     */
+    private MessageTypeEnum matchType(String fileName) {
+
+        if (fileName.contains(MessageTypeEnum.CEB312.getType())) {
+            return MessageTypeEnum.CEB312;
+        } else if (fileName.contains(MessageTypeEnum.CEB622.getType())) {
+            return MessageTypeEnum.CEB622;
+        } else if (fileName.contains(MessageTypeEnum.CEB624.getType())) {
+            return MessageTypeEnum.CEB624;
+        } else if (fileName.contains(MessageTypeEnum.CEB626.getType())) {
+            return MessageTypeEnum.CEB626;
+        } else if (fileName.contains(MessageTypeEnum.CEB816.getType())) {
+            return MessageTypeEnum.CEB816;
+        } else {
+            log.error("----- 未匹配到【{}】文件的消息类型 -----", fileName);
+        }
+
+        return MessageTypeEnum.UNKNOWN;
+    }
+
+    //    @Scheduled(fixedRate = 10000)
     public void sendCEB621 (int size) {
         String content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                 "<configuration>\n" +

+ 2 - 4
src/main/resources/application.properties

@@ -9,8 +9,6 @@ spring.rabbitmq.virtual-host=/
 cport.push_dir=D:\\report\\report
 #\u56DE\u6267\u76EE\u5F55
 cport.pull_dir=D:\\report\\receipt
-#\u62A5\u6587\u56DE\u6267\u7C7B\u578B  \u5176\u5B83\u62A5\u6587\u7C7B\u578B\u9700\u8981\u4FEE\u6539
-cport.receipt_type=CEB622Message
 #\u662F\u5426\u4E3A\u53D1\u9001621\u6E05\u5355\u62A5\u6587  \u5176\u5B83\u62A5\u6587\u7C7B\u578B\u9700\u8981\u4FEE\u6539\u4E3Afalse
 cport.ceb621=true
 # \u6D4B\u8BD5\u73AF\u5883mq\u76F8\u5173\u914D\u7F6E
@@ -31,9 +29,9 @@ cport.ceb621=true
 #spring.rabbitmq.password=Abc-123#
 #spring.rabbitmq.virtual-host=/
 #\u4E0A\u62A5\u76EE\u5F55
-#cport.push_dir=D:\\report\\report
+#cport.push_dir=E:\\SZDEC\\ReportSend
 #\u56DE\u6267\u76EE\u5F55
-#cport.pull_dir=D:\\report\\receipt
+#cport.pull_dir=E:\\SZDEC\\ReceiptReceive
 
 # \u901A\u7528\u914D\u7F6E
 

+ 52 - 6
src/main/resources/mq.properties

@@ -1,18 +1,64 @@
 ########################## \u6D88\u606F\u961F\u5217\u914D\u7F6E \u6E05\u5355\u914D\u7F6E ############################
 #                 \u4E0A\u62A5\u961F\u5217                  #
-q.normal.csp.to.tunnel.report=q.normal.csp.to.tunnel.report.621
+q.normal.csp.to.tunnel.report.621=q.normal.csp.to.tunnel.report.621
 #                 \u56DE\u6267\u961F\u5217                  #
-q.normal.tunnel.to.csp.receipt=q.normal.tunnel.to.csp.receipt.621
+q.normal.tunnel.to.csp.receipt.621=q.normal.tunnel.to.csp.receipt.621
 
 #                 \u4E0A\u62A5\u4EA4\u6362\u673A                  #
-e.normal.csp.to.tunnel.report=e.normal.csp.to.tunnel.report.621
+#e.normal.csp.to.tunnel.report.621=e.normal.csp.to.tunnel.report.621
 #                 \u56DE\u6267\u4EA4\u6362\u673A                  #
-e.normal.tunnel.to.csp.receipt=e.normal.tunnel.to.csp.receipt.621
+#e.normal.tunnel.to.csp.receipt.621=e.normal.tunnel.to.csp.receipt.621
 
 #                 \u4E0A\u62A5\u961F\u5217\u8DEF\u7531\u952E                  #
-k.normal.csp.to.tunnel.report=k.normal.csp.to.tunnel.report.621
+k.normal.csp.to.tunnel.report.621=k.normal.csp.to.tunnel.report.621
 #                 \u56DE\u6267\u961F\u5217\u8DEF\u7531\u952E                  #
-k.normal.tunnel.to.csp.receipt=k.normal.tunnel.to.csp.receipt.621
+k.normal.tunnel.to.csp.receipt.621=k.normal.tunnel.to.csp.receipt.621
+########################## \u6D88\u606F\u961F\u5217\u914D\u7F6E \u6E05\u5355\u914D\u7F6E ############################
+#                 \u4E0A\u62A5\u961F\u5217                  #
+q.normal.csp.to.tunnel.report.311=q.normal.csp.to.tunnel.report.311
+#                 \u56DE\u6267\u961F\u5217                  #
+q.normal.tunnel.to.csp.receipt.311=q.normal.tunnel.to.csp.receipt.311
+
+#                 \u4E0A\u62A5\u4EA4\u6362\u673A                  #
+#e.normal.csp.to.tunnel.report.311=e.normal.csp.to.tunnel.report.311
+#                 \u56DE\u6267\u4EA4\u6362\u673A                  #
+#e.normal.tunnel.to.csp.receipt.311=e.normal.tunnel.to.csp.receipt.311
+
+#                 \u4E0A\u62A5\u961F\u5217\u8DEF\u7531\u952E                  #
+k.normal.csp.to.tunnel.report.311=k.normal.csp.to.tunnel.report.311
+#                 \u56DE\u6267\u961F\u5217\u8DEF\u7531\u952E                  #
+k.normal.tunnel.to.csp.receipt.311=k.normal.tunnel.to.csp.receipt.311
+
+
+#                 \u64A4\u5355\u3001\u9000\u5355\u3001\u7535\u5B50\u7A0E\u5355\u56DE\u6267\u961F\u5217                  #
+q.normal.tunnel.to.csp.receipt.623=q.normal.tunnel.to.csp.receipt.623
+q.normal.tunnel.to.csp.receipt.625=q.normal.tunnel.to.csp.receipt.625
+q.normal.tunnel.to.csp.receipt.816=q.normal.tunnel.to.csp.receipt.816
+
+#                 \u64A4\u5355\u3001\u9000\u5355\u3001\u7535\u5B50\u7A0E\u5355\u56DE\u6267\u4EA4\u6362\u673A                  #
+#e.normal.tunnel.to.csp.receipt.623=e.normal.tunnel.to.csp.receipt.623
+#e.normal.tunnel.to.csp.receipt.625=e.normal.tunnel.to.csp.receipt.625
+#e.normal.tunnel.to.csp.receipt.816=e.normal.tunnel.to.csp.receipt.816
+
+#                 \u64A4\u5355\u3001\u9000\u5355\u3001\u7535\u5B50\u7A0E\u5355\u56DE\u6267\u961F\u5217\u8DEF\u7531\u952E                  #
+k.normal.tunnel.to.csp.receipt.623=k.normal.tunnel.to.csp.receipt.623
+k.normal.tunnel.to.csp.receipt.625=k.normal.tunnel.to.csp.receipt.625
+k.normal.tunnel.to.csp.receipt.816=k.normal.tunnel.to.csp.receipt.816
+
+
+#                 \u64A4\u5355\u3001\u9000\u5355\u3001\u7535\u5B50\u7A0E\u5355\u4E0A\u62A5\u961F\u5217                  #
+q.normal.csp.to.tunnel.report.623=q.normal.csp.to.tunnel.report.623
+q.normal.csp.to.tunnel.report.625=q.normal.csp.to.tunnel.report.625
+q.normal.csp.to.tunnel.report.816=q.normal.csp.to.tunnel.report.816
+
+#                 \u64A4\u5355\u3001\u9000\u5355\u3001\u7535\u5B50\u7A0E\u5355\u4E0A\u62A5\u961F\u5217\u8DEF\u7531\u952E                  #
+k.normal.csp.to.tunnel.report.623=k.normal.csp.to.tunnel.report.623
+k.normal.csp.to.tunnel.report.625=k.normal.csp.to.tunnel.report.625
+k.normal.csp.to.tunnel.report.816=k.normal.csp.to.tunnel.report.816
+
+#                 \u4E0A\u62A5\u548C\u56DE\u6267\u901A\u7528\u4EA4\u6362\u673A                  #
+e.normal.csp.to.tunnel.report=e.normal.csp.to.tunnel.report
+e.normal.tunnel.to.csp.receipt=e.normal.tunnel.to.csp.receipt
 
 
 #                 \u6E05\u5173\u65F6\u6548\u6027\u961F\u5217                  #