From 65248c920a934f43679d3bdfcfce72147dc05ba5 Mon Sep 17 00:00:00 2001 From: jiang Date: Fri, 28 Nov 2025 16:40:47 +0800 Subject: [PATCH] =?UTF-8?q?bug=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SupDispatchCarServiceImpl.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/bonus/gzcar/business/backstage/service/SupDispatchCarServiceImpl.java b/src/main/java/com/bonus/gzcar/business/backstage/service/SupDispatchCarServiceImpl.java index 3b19f01..5d84662 100644 --- a/src/main/java/com/bonus/gzcar/business/backstage/service/SupDispatchCarServiceImpl.java +++ b/src/main/java/com/bonus/gzcar/business/backstage/service/SupDispatchCarServiceImpl.java @@ -25,10 +25,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; /** * 供应商 派车录入业务层 @@ -448,15 +445,18 @@ public class SupDispatchCarServiceImpl implements SupDispatchCarService { String gls = vo.getGls(); try { String tonType; - Integer tonValue = Integer.valueOf(vo.getTon()); // 先获取值,避免重复调用方法 - if (tonValue == null) { - // 处理 null 情况(根据业务需求,可选默认值 1/2/3 或抛出异常) + // 1. 先获取值并做 null 防护,避免 NPE + BigDecimal tonValue = Optional.ofNullable(vo.getTon()) + .map(BigDecimal::new) // 若 vo.getTon() 是 String 类型,需确保格式正确(如数字字符串) + // 若 vo.getTon() 已为 BigDecimal,直接用 .orElse(BigDecimal.ZERO) + .orElse(BigDecimal.ZERO); // null 时默认 0(符合 "小于2" 逻辑,对应 tonType="1") + + // 2. BigDecimal 必须用 compareTo 比较,不能直接用 < > == + if (tonValue.compareTo(new BigDecimal("2")) < 0) { // tonValue < 2(包含 null/0/1 等) tonType = "1"; - } else if (tonValue < 2) { - tonType = "1"; - } else if (tonValue < 5) { // 隐含条件:2 ≤ tonValue < 5 + } else if (tonValue.compareTo(new BigDecimal("5")) < 0) { // 2 ≤ tonValue < 5 tonType = "2"; - } else { // 隐含条件:tonValue ≥ 5(原逻辑写的 >5,这里包含等于,需确认是否需要调整) + } else { // tonValue ≥ 5(明确包含等于5的情况) tonType = "3"; } PriceVo priceVo = getMoney(vo.getContractId(), null, vo.getSupId(), gls, tonType);