Parcourir la source

Merge remote-tracking branch 'ship-ota-server/main' into main1

luofeiyun il y a 3 semaines
Parent
commit
8d6b71f809

+ 9 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -599,8 +599,17 @@ public class VoyageApiImpl implements VoyageApi {
                 if (list != null && !list.isEmpty()) {
                     list.forEach(item -> {
                         String key = item.getRoomModelId() + "_" + item.getFloor();
+                        if(item.getBookNum()==null){
+                            item.setBookNum(BigDecimal.ZERO);
+                        }
+                        if(item.getNum()==null){
+                            item.setNum(BigDecimal.ZERO);
+                        }
                         item.setNum(item.getNum().add(totalNumMap.get(key)));
                         item.setBookNum(item.getBookNum().subtract(totalNumMap.get(key)));
+                        if(item.getBookNum().compareTo(BigDecimal.ZERO)<0){
+                            item.setBookNum(BigDecimal.ZERO);
+                        }
                     });
                     voyageStockDistributeNewMapper.updateBatch(list);
                 }

+ 9 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/utils/BeanUtils.java

@@ -3,6 +3,7 @@ package com.yc.ship.module.trade.utils;
 import com.yc.ship.module.trade.framework.annotation.ForUpdate;
 
 import java.lang.reflect.Field;
+import java.math.BigDecimal;
 import java.util.Objects;
 
 /**
@@ -21,6 +22,9 @@ public class BeanUtils {
      * @return
      */
     public static <T> String getChangedFields(T newBean, T oldBean) {
+        if (newBean == null || oldBean == null) {
+            return "";
+        }
         Field[] fields = newBean.getClass().getDeclaredFields();
         StringBuilder builder = new StringBuilder();
         for (Field field : fields) {
@@ -29,6 +33,11 @@ public class BeanUtils {
                 try {
                     Object newValue = field.get(newBean);
                     Object oldValue = field.get(oldBean);
+                    if(newValue instanceof BigDecimal && oldValue instanceof BigDecimal) {
+                        if(((BigDecimal) newValue).compareTo((BigDecimal) oldValue) == 0) {
+                            continue;
+                        }
+                    }
                     if (!Objects.equals(newValue, oldValue)) {
                         //获取字段名称
                         builder.append(field.getAnnotation(ForUpdate.class).fieldName());