Kaynağa Gözat

订单列表数字相关相关强制返回保留两位小数

yzc 2 yıl önce
ebeveyn
işleme
2126b5c2c9

+ 2 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/model/vo/WorkbenchPurchaseVO.java

@@ -9,6 +9,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -33,7 +34,7 @@ public class WorkbenchPurchaseVO implements Serializable {
     /**
      * 订单成交数量
      */
-    private Double amount;
+    private BigDecimal amount;
 
     /**
      * 订单单位(吨、方、箱、件)

+ 29 - 8
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -28,6 +28,7 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Pattern;
@@ -139,13 +140,33 @@ public class KwOrderService {
                     .setSource(sourceMap.get(e.getSource()))
                     .setLoadDetailAddressInfo(loadCityName + loadDetailAddress)
                     .setUnloadDetailAddressInfo(unloadCityName + unloadDetailAddress)
-                    .setWaitEntrustAmount(getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount()))
-                    .setActualPrice(actualAmount.multiply(unitPrice).doubleValue());
+                    .setUnitPrice(setScale(e.getUnitPrice()))
+                    .setPrice(setScale(e.getPrice()))
+                    .setAmount(setScale(e.getAmount()))
+                    .setEntrustAmount(setScale(e.getEntrustAmount()))
+                    .setActualAmount(setScale(e.getActualAmount()))
+                    .setWaitEntrustAmount(setScale(getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount())))
+                    .setActualPrice(actualAmount.multiply(unitPrice).setScale(2, RoundingMode.HALF_UP));
             result.add(order);
         });
         return PageResult.build(page, pageSize, count, result);
     }
 
+
+    /**
+     * @desc: 设置两位小数
+     * @author: yzc
+     * @date: 2023-09-26 10:11
+     * @Param d:
+     * @return: java.lang.BigDecimal
+     */
+    private BigDecimal setScale(Double d) {
+        if (Objects.isNull(d) || BigDecimal.ZERO.compareTo(BigDecimal.valueOf(d)) == 0) {
+            return new BigDecimal("0.00");
+        }
+        return BigDecimal.valueOf(d).setScale(2, RoundingMode.HALF_UP);
+    }
+
     /**
      * @desc: 获取订单待分配运输量
      * @author: yzc
@@ -437,12 +458,12 @@ public class KwOrderService {
             TradeOrderListExport export = BeanUtils.copyProperties(e, TradeOrderListExport.class);
             export.setSerialNumber(String.valueOf(i.getAndIncrement()))
                     .setStatus(statusMap.get(String.valueOf(e.getStatus())))
-                    .setUnitPrice(Objects.isNull(e.getUnitPrice()) ? "0.00" : String.valueOf(e.getUnitPrice()))
-                    .setAmount(Objects.isNull(e.getAmount()) ? "0.00" : String.valueOf(e.getAmount()))
-                    .setPrice(Objects.isNull(e.getPrice()) ? "0.00" : String.valueOf(e.getPrice()))
-                    .setEntrustAmount(Objects.isNull(e.getEntrustAmount()) ? "0.00" : String.valueOf(e.getEntrustAmount()))
-                    .setActualAmount(Objects.isNull(e.getActualAmount()) ? "0.00" : String.valueOf(e.getActualAmount()))
-                    .setWaitEntrustAmount(Objects.isNull(waitEntrustAmount) ? "0.00" : String.valueOf(waitEntrustAmount))
+                    .setUnitPrice(String.valueOf(setScale(e.getUnitPrice())))
+                    .setAmount(String.valueOf(setScale(e.getAmount())))
+                    .setPrice(String.valueOf(setScale(e.getPrice())))
+                    .setEntrustAmount(String.valueOf(setScale(e.getEntrustAmount())))
+                    .setActualAmount(String.valueOf(setScale(e.getActualAmount())))
+                    .setWaitEntrustAmount(String.valueOf(setScale(waitEntrustAmount)))
                     .setPickupType(pickupMap.get(e.getPickupType()))
                     .setDeliveryType(deliveryMap.get(e.getDeliveryType()))
                     .setSource(sourceMap.get(e.getSource()))

+ 16 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderStatisticsService.java

@@ -225,9 +225,25 @@ public class KwOrderStatisticsService {
         orders.forEach(e -> {
             WorkbenchPurchaseVO vo = BeanUtils.copyProperties(e, WorkbenchPurchaseVO.class);
             vo.setUnitLabel(unitMap.get(e.getUnit()))
+                    .setAmount(setScale(e.getAmount()))
                     .setGoodsTypeLabel(goodsNameMap.get(e.getGoodsType()));
             result.add(vo);
         });
         return result;
     }
+
+
+    /**
+     * @desc: 设置两位小数
+     * @author: yzc
+     * @date: 2023-09-26 10:11
+     * @Param d:
+     * @return: java.lang.BigDecimal
+     */
+    private BigDecimal setScale(Double d) {
+        if (Objects.isNull(d) || BigDecimal.ZERO.compareTo(BigDecimal.valueOf(d)) == 0) {
+            return new BigDecimal("0.00");
+        }
+        return BigDecimal.valueOf(d).setScale(2, RoundingMode.HALF_UP);
+    }
 }

+ 8 - 7
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

@@ -7,6 +7,7 @@ import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.Date;
 
@@ -133,33 +134,33 @@ public class OrderListRes {
     /**
      * 订单成交单价
      */
-    private Double unitPrice;
+    private BigDecimal unitPrice;
     /**
      * 订单金额
      */
-    private Double price;
+    private BigDecimal price;
 
     /**
      * 订单总量
      */
-    private Double amount;
+    private BigDecimal amount;
     /**
      * 已委托量
      */
-    private Double entrustAmount;
+    private BigDecimal entrustAmount;
     /**
      * 待委托量
      */
-    private Double waitEntrustAmount;
+    private BigDecimal waitEntrustAmount;
     /**
      * 实际交付量
      */
-    private Double actualAmount;
+    private BigDecimal actualAmount;
 
     /**
      * 实际订单金额
      */
-    private Double actualPrice;
+    private BigDecimal actualPrice;
     /**
      * 归属项目
      */