refactor(quotation): 优化价格计算逻辑并修复数据类型问题

- 修改AppRatioAgentConfigController中的价格计算逻辑,增加空值检查避免NPE
- 更新PlanSearchItemVO中salePrice的计算方法,统一使用NumberUtil.multiply
- 注释掉ProductModelMapper.xml中型号编号的查询条件
- 修正QuotationProductModelSearchVO中moduleName字段类型为String
- 在PlanSearchItemVO中添加NumberUtil导入声明
This commit is contained in:
曹鹏飞 2026-03-13 19:05:48 +08:00
parent 6a7b51ce73
commit 24185b09e5
4 changed files with 14 additions and 13 deletions

View File

@ -1,5 +1,6 @@
package com.nflg.mobilebroken.common.pojo.vo; package com.nflg.mobilebroken.common.pojo.vo;
import com.nflg.mobilebroken.common.util.NumberUtil;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -54,9 +55,6 @@ public class PlanSearchItemVO {
private BigDecimal salePrice; private BigDecimal salePrice;
public BigDecimal getSalePrice() { public BigDecimal getSalePrice() {
if (Objects.nonNull(standardPrice)) { return NumberUtil.multiply(standardPrice,ratio);
return standardPrice.multiply(ratio);
}
return null;
} }
} }

View File

@ -14,7 +14,7 @@ public class QuotationProductModelSearchVO {
/** /**
* 模块名称 * 模块名称
*/ */
private Integer moduleName; private String moduleName;
/** /**
* 系列名称 * 系列名称

View File

@ -131,10 +131,13 @@ public class AppRatioAgentConfigController extends ControllerBase {
&& it.getUserId().equals(user.getId())) && it.getUserId().equals(user.getId()))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
QuotationModelRatioAgentItem mitem = ratioAgentItemService.getEffectiveForUser(data.getBatchNumber(), AppUserUtil.getUserId()); BigDecimal basePrice = Optional.ofNullable(modelPrice).map(ModelPriceVO::getAmount).orElse(null);
BigDecimal basePrice = Objects.nonNull(modelPrice) ? NumberUtil.multiply(modelPrice.getAmount(), Optional.ofNullable(mitem) if (Objects.nonNull(basePrice)) {
.map(QuotationModelRatioAgentItem::getStandardRatio) QuotationModelRatioAgentItem mitem = ratioAgentItemService.getEffectiveForUser(data.getBatchNumber(), AppUserUtil.getUserId());
.orElse(null)) : null; if (Objects.nonNull(mitem)) {
basePrice = NumberUtil.multiply(basePrice, mitem.getStandardRatio());
}
}
BigDecimal standardRatio = Objects.nonNull(item) ? item.getStandardRatio() : null; BigDecimal standardRatio = Objects.nonNull(item) ? item.getStandardRatio() : null;
map.put(user.getId().toString() + "-standardPrice", NumberUtil.format(basePrice)); map.put(user.getId().toString() + "-standardPrice", NumberUtil.format(basePrice));
map.put(user.getId().toString() + "-standardRatio", NumberUtil.format(standardRatio)); map.put(user.getId().toString() + "-standardRatio", NumberUtil.format(standardRatio));
@ -239,7 +242,7 @@ public class AppRatioAgentConfigController extends ControllerBase {
} }
/** /**
* 获取方案列表 * 查看下级数据
*/ */
@PostMapping("list/search") @PostMapping("list/search")
public ApiResult<PageData<RatioConfigSearchVO>> search(@Valid @RequestBody ModelRatioUserSearchRequest request) { public ApiResult<PageData<RatioConfigSearchVO>> search(@Valid @RequestBody ModelRatioUserSearchRequest request) {

View File

@ -137,9 +137,9 @@
<if test="request.hasDiscount==true"> <if test="request.hasDiscount==true">
AND dis.model_id is not null AND dis.model_id is not null
</if> </if>
<if test="request.no!=null and request.no!=''"> <!-- <if test="request.no!=null and request.no!=''">-->
AND pm.`no` like concat('%', #{request.no}, '%') <!-- AND pm.`no` like concat('%', #{request.no}, '%')-->
</if> <!-- </if>-->
ORDER BY pm.sort,pm.id DESC ORDER BY pm.sort,pm.id DESC
</select> </select>