From aeaa8a854082ef1baabb46a43ca7da1c9de77f09 Mon Sep 17 00:00:00 2001 From: wuwenxiong <646448316@qq.com> Date: Fri, 5 Nov 2021 14:21:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E4=BD=99=E9=A2=9D=E7=AD=89?= =?UTF-8?q?=E4=BA=8E=E6=80=BB=E4=BB=B7=E6=97=B6=E6=97=A0=E6=B3=95=E9=85=8D?= =?UTF-8?q?=E9=A2=9D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cowr/common/utils/MathUtil.java | 22 +++++++++++++++++++ .../ordercluster/OrderclusterSyncService.java | 11 +++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/MathUtil.java b/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/MathUtil.java index f3519b9..d886859 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/MathUtil.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/common/utils/MathUtil.java @@ -52,4 +52,26 @@ public class MathUtil { return b; } + /** + * 获取double类型的小数位数 + * @param number + * @return + */ + public static int getNumberDecimalDigits(double number) { + String moneyStr = String.valueOf(number); + String[] num = moneyStr.split("\\."); + if (num.length == 2) { + for (;;){ + if (num[1].endsWith("0")) { + num[1] = num[1].substring(0, num[1].length() - 1); + }else { + break; + } + } + return num[1].length(); + }else { + return 0; + } + } + } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java index 0fa78af..35b961e 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/order/ordercluster/OrderclusterSyncService.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.cowr.common.enums.Enums; import com.cowr.common.enums.OrderStateEnum; import com.cowr.common.utils.DateTimeUtil; +import com.cowr.common.utils.MathUtil; import com.cowr.common.view.Result; import com.cowr.model.*; import com.cowr.service.ssjygl.base.BaseSyncService; @@ -81,6 +82,10 @@ public class OrderclusterSyncService extends BaseSyncService { int max_truck = obj.getIntValue("max_truck"); int product_id = obj.getIntValue("product_id"); double total_weight = obj.getDouble("total_weight"); + int decimal = 0; + if (total_weight > 0 && String.valueOf(total_weight).indexOf(".") > 0) { + decimal = MathUtil.getNumberDecimalDigits(total_weight); + } Supermarket supermarket = SvrCacheData.SUP_CACHE.get(supermarket_id); if (supermarket == null) { @@ -130,13 +135,13 @@ public class OrderclusterSyncService extends BaseSyncService { } // 本次配额总价不能超过余额 - if (unitprice.multiply(new BigDecimal(total_weight)).compareTo(prepayCustomer.getSurplus()) > 0) { + if (unitprice.multiply(new BigDecimal(total_weight).setScale(decimal, BigDecimal.ROUND_HALF_UP)).compareTo(prepayCustomer.getSurplus()) > 0) { return Result.failedstr("余额 %.2f 不足以购买 %.2f 吨", prepayCustomer.getSurplus(), total_weight); } // 客户在所有砂站的未完成的配额中,未执行完成的总金额 BigDecimal undo_price = OrderclusterService.me.undoPrice(customer_id); - BigDecimal plan_total_price = new BigDecimal(total_weight).multiply(unitprice).add(undo_price); // 本次配额总价格 + BigDecimal plan_total_price = (new BigDecimal(total_weight).setScale(decimal, BigDecimal.ROUND_HALF_UP)).multiply(unitprice).add(undo_price); // 本次配额总价格 // 本次计划总额加上未完成的量,不能超过余额 if (plan_total_price.compareTo(prepayCustomer.getSurplus()) > 0) { @@ -164,7 +169,7 @@ public class OrderclusterSyncService extends BaseSyncService { model.setTransDistance(SupermarketReceiverDistanceService.me.getDistance(supermarket_id, customer_id)); - model.setTotalWeight(new BigDecimal(total_weight)); + model.setTotalWeight(new BigDecimal(total_weight).setScale(decimal, BigDecimal.ROUND_HALF_UP)); model.setStartTime(start_time); model.setCutoffTime(cutoff_time);