Преглед изворни кода

1、mongodb+rabbitmq实现异步写入优化

zk пре 2 година
родитељ
комит
c242b6c522

+ 6 - 0
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwWaybillOrder.java

@@ -92,6 +92,11 @@ public class SckwWaybillOrder{
      */
     private String truckTrailerNo;
 
+    /**
+     * 车队班组
+     */
+    private String truckFleetName;
+
     /**
      * 司机主键ID
      */
@@ -112,6 +117,7 @@ public class SckwWaybillOrder{
      */
     private String driverIdcard;
 
+
     /**
      * 装货日期
      */

+ 31 - 0
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwBusSum.java

@@ -0,0 +1,31 @@
+package com.sckw.stream.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author zk
+ * @desc rabbitMq业务汇总数据发送/消费对象
+ * @date 2023/7/10 0010
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SckwBusSum {
+
+    /**
+     * 业务汇总类型(tradeOrder交易订单、logisticsOrder物流订单、waybillOrder车辆运单等)
+     */
+    private String busSumType;
+
+    /**
+     * 操作对象(1新增/2修改)
+     */
+    private int method;
+
+    /**
+     * 业务汇总数据对象
+     */
+    private Object object;
+}

+ 58 - 9
sckw-modules/sckw-report/src/main/java/com/sckw/report/consumer/SckwBusSumConsumer.java

@@ -1,16 +1,20 @@
 package com.sckw.report.consumer;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.mongo.model.SckwTradeOrder;
+import com.sckw.mongo.model.SckwWaybillOrder;
+import com.sckw.report.dao.SckwLogisticsOrderRepository;
 import com.sckw.report.dao.SckwTradeOrderRepository;
+import com.sckw.report.dao.SckwWaybillOrderRepository;
+import com.sckw.stream.model.SckwBusSum;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import java.util.Date;
-import java.util.Map;
 import java.util.function.Consumer;
 
 /**
@@ -24,12 +28,20 @@ import java.util.function.Consumer;
 public class SckwBusSumConsumer {
     @Autowired
     SckwTradeOrderRepository tradeOrderRepository;
+    @Autowired
+    SckwLogisticsOrderRepository logisticsOrderRepository;
+    @Autowired
+    SckwWaybillOrderRepository waybillOrderRepository;
 
+    /**
+     * @desc 消息订阅
+     * @author zk
+     * @date 2023/7/8
+     **/
     @Bean
-    public Consumer<Map> sckwBusSum() {
+    public Consumer<SckwBusSum> sckwBusSum() {
         return sckwBusSum -> {
             try {
-                System.out.println(new Date()+"---------"+JSON.toJSONString(sckwBusSum));
                 addMongodb(sckwBusSum);
             } catch (Exception e) {
                 log.error("处理业务数据汇总消息:{}异常", JSON.toJSONString(sckwBusSum), e);
@@ -37,8 +49,45 @@ public class SckwBusSumConsumer {
         };
     }
 
-    public void addMongodb(Map<String, Object> sckwBusSum) {
-        SckwTradeOrder order = JSONObject.parseObject(JSON.toJSONString(sckwBusSum), SckwTradeOrder.class);
-        tradeOrderRepository.insert(order);
+    /**
+     * @param busSum rabbitMq业务汇总数据发送/消费对象
+     * @desc 业务存储处理
+     * @author zk
+     * @date 2023/7/8
+     **/
+    public void addMongodb(SckwBusSum busSum) {
+        /**初级校验**/
+        if (busSum.getObject() == null || StringUtils.isBlank(busSum.getBusSumType()) || busSum.getMethod() == 0) {
+            return;
+        }
+
+        /**业务存储**/
+        if (busSum.getBusSumType().equals("tradeOrder")) {
+            SckwTradeOrder order = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), SckwTradeOrder.class);
+            if (busSum.getMethod() == 1) {
+                tradeOrderRepository.insert(order);
+            } else {
+                tradeOrderRepository.save(order);
+            }
+        }
+
+        if (busSum.getBusSumType().equals("logisticsOrder")) {
+            SckwLogisticsOrder order = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), SckwLogisticsOrder.class);
+            if (busSum.getMethod() == 1) {
+                logisticsOrderRepository.insert(order);
+            } else {
+                logisticsOrderRepository.save(order);
+            }
+        }
+
+        if (busSum.getBusSumType().equals("waybillOrder")) {
+            SckwWaybillOrder order = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), SckwWaybillOrder.class);
+            if (busSum.getMethod() == 1) {
+                waybillOrderRepository.insert(order);
+            } else {
+                waybillOrderRepository.save(order);
+            }
+        }
     }
+
 }

+ 13 - 39
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwFleetController.java

@@ -5,6 +5,7 @@ import com.sckw.core.exception.SystemException;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.report.dao.SckwTradeOrderRepository;
+import com.sckw.stream.model.SckwBusSum;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 
@@ -32,46 +34,18 @@ public class KwFleetController {
     @Resource
     StreamBridge streamBridge;
 
-    /**
-     * @param
-     * @desc 根据主键查询
-     * @author zk
-     * @date 2023/7/6
-     **/
-    @GetMapping("/detail")
-    public HttpResult selectByKey() throws SystemException {
-        List<SckwTradeOrder> list = new ArrayList<SckwTradeOrder>();
-        Long begtime = System.currentTimeMillis();
-        for (int i=0; i<10000; i++) {
-            SckwTradeOrder order = new SckwTradeOrder();
-            order.setTOrderId(System.currentTimeMillis() + i);
-            order.setTOrderNo("O" + order.getTOrderId());
-            order.setContractName("xxxx");
-            list.add(order);
-        }
-        tradeOrderRepository.insert(list);
-        Long enttime = System.currentTimeMillis();
-        System.out.println("------------------"+(enttime - begtime));
-        return HttpResult.ok();
-    }
+    @GetMapping("/detailV2")
+    public HttpResult selectByKey2(Long id, int method) throws SystemException {
+        SckwTradeOrder order = new SckwTradeOrder();
+        order.setTOrderId(id);
+        order.setTOrderNo("D" + id);
+        order.setContractName(new Date()+"");
 
-    /**
-     * @param
-     * @desc 根据主键查询
-     * @author zk
-     * @date 2023/7/6
-     **/
-    @GetMapping("/detailV1")
-    public HttpResult selectByKey1() throws SystemException {
-        for (int i=0; i<1000; i++) {
-            Long id = System.currentTimeMillis()+i;
-            HashMap map = new HashMap();
-            map.put("tOrderId", id);
-            map.put("tOrderNo", "D" + id);
-            map.put("contractName", "xxxx");
-            streamBridge.send("sckw-busSum", JSON.toJSONString(map));
-            System.out.println("------------------"+i);
-        }
+        SckwBusSum busSum = new SckwBusSum();
+        busSum.setBusSumType("tradeOrder");
+        busSum.setMethod(method);
+        busSum.setObject(order);
+        streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
         return HttpResult.ok();
     }
 }

+ 22 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderController.java

@@ -0,0 +1,22 @@
+package com.sckw.report.controller;
+
+import com.sckw.report.service.KwOrderService;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author zk
+ * @desc 订单服务
+ * @date 2023/7/10 0010
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/kwOrder")
+public class KwOrderController {
+
+    @Autowired
+    KwOrderService orderService;
+
+}

+ 21 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwTransportController.java

@@ -0,0 +1,21 @@
+package com.sckw.report.controller;
+
+import com.sckw.report.service.KwTransportService;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author zk
+ * @desc 运输服务
+ * @date 2023/7/10 0010
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/kwTransport")
+public class KwTransportController {
+
+    @Autowired
+    KwTransportService transportService;
+}

+ 12 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/dao/SckwLogisticsOrderRepository.java

@@ -0,0 +1,12 @@
+package com.sckw.report.dao;
+
+import com.sckw.mongo.model.SckwLogisticsOrder;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+/**
+ * @author zk
+ * @desc MongoDB-物流订单信息
+ * @date 2023/7/8 0008
+ */
+public interface SckwLogisticsOrderRepository extends MongoRepository<SckwLogisticsOrder, Long> {
+}

+ 12 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/dao/SckwWaybillOrderRepository.java

@@ -0,0 +1,12 @@
+package com.sckw.report.dao;
+
+import com.sckw.mongo.model.SckwWaybillOrder;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+/**
+ * @author zk
+ * @desc MongoDB-车辆订单信息
+ * @date 2023/7/8 0008
+ */
+public interface SckwWaybillOrderRepository extends MongoRepository<SckwWaybillOrder, Long> {
+}

+ 12 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwFleetService.java

@@ -0,0 +1,12 @@
+package com.sckw.report.service;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zk
+ * @desc 车队服务
+ * @date 2023/7/10 0010
+ */
+@Service
+public class KwFleetService {
+}

+ 9 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -0,0 +1,9 @@
+package com.sckw.report.service;
+
+/**
+ * @author zk
+ * @desc 订单服务
+ * @date 2023/7/10 0010
+ */
+public class KwOrderService {
+}

+ 12 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -0,0 +1,12 @@
+package com.sckw.report.service;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zk
+ * @desc 运输服务
+ * @date 2023/7/10 0010
+ */
+@Service
+public class KwTransportService {
+}