Просмотр исходного кода

1、处理mongodb对象空值更新问题;

zk 2 лет назад
Родитель
Сommit
eee9a73d18

+ 23 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/BeanUtils.java

@@ -216,4 +216,27 @@ public class BeanUtils extends BeanUtil {
         }
         return false;
     }
+
+    /**
+     * @param source 源对象
+     * @param target 目标对象
+     * @desc source 属性值赋值给target
+     * @author zk
+     * @date 2023/7/18
+     **/
+    public static void copyPropertiesValue(Object source, Object target) {
+        // 获取实体类的所有属性,返回Field数组
+        Field[] field = target.getClass().getDeclaredFields();
+        // 遍历所有属性
+        for (int j = 0; j < field.length; j++) {
+            // 获取属性的名字
+            String fieldName = field[j].getName();
+            // 通过属性名称获取对象属性值
+            Object value = BeanUtils.getProperty(source, fieldName);
+            if (StringUtils.isNotBlank(value)) {
+                // 为对象属性赋值
+                BeanUtils.setProperty(target, fieldName, value);
+            }
+        }
+    }
 }

+ 19 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/consumer/SckwBusSumConsumer.java

@@ -3,6 +3,7 @@ package com.sckw.report.consumer;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.sckw.core.exception.BusinessException;
+import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.mongo.model.SckwTradeOrder;
@@ -67,12 +68,18 @@ public class SckwBusSumConsumer {
         }
 
         /**业务存储**/
+        /**贸易订单**/
         if (busSum.getBusSumType().equals("tradeOrder")) {
             SckwTradeOrder order = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), SckwTradeOrder.class);
             order.set_id(order.getTOrderId());
             if (busSum.getMethod() == 1) {
+                /**新增**/
                 tradeOrderRepository.insert(order);
             } else if (busSum.getMethod() == 2) {
+                /**更新**/
+                Optional<SckwTradeOrder> optional = tradeOrderRepository.findById(order.get_id());
+                SckwTradeOrder order1 = optional.get();
+                BeanUtils.copyPropertiesValue(order, order1);
                 tradeOrderRepository.save(order);
             } else {
                 Optional<SckwTradeOrder> sckwTradeOrder = tradeOrderRepository.findById(order.getTOrderId());
@@ -87,22 +94,34 @@ public class SckwBusSumConsumer {
             }
         }
 
+        /**物流订单**/
         if (busSum.getBusSumType().equals("logisticsOrder")) {
             SckwLogisticsOrder order = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), SckwLogisticsOrder.class);
             order.set_id(order.getLOrderId());
             if (busSum.getMethod() == 1) {
+                /**新增**/
                 logisticsOrderRepository.insert(order);
             } else {
+                /**更新**/
+                Optional<SckwLogisticsOrder> optional = logisticsOrderRepository.findById(order.get_id());
+                SckwLogisticsOrder order1 = optional.get();
+                BeanUtils.copyPropertiesValue(order, order1);
                 logisticsOrderRepository.save(order);
             }
         }
 
+        /**车辆运单**/
         if (busSum.getBusSumType().equals("waybillOrder")) {
             SckwWaybillOrder order = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), SckwWaybillOrder.class);
             order.set_id(order.getWOrderId());
             if (busSum.getMethod() == 1) {
+                /**新增**/
                 waybillOrderRepository.insert(order);
             } else {
+                /**更新**/
+                Optional<SckwWaybillOrder> optional = waybillOrderRepository.findById(order.get_id());
+                SckwWaybillOrder order1 = optional.get();
+                BeanUtils.copyPropertiesValue(order, order1);
                 waybillOrderRepository.save(order);
             }
         }