小改一下

master
ljw 2025-11-10 09:38:25 +08:00
parent d59789fb9e
commit ca40e8260f
1 changed files with 10 additions and 10 deletions

View File

@ -1306,7 +1306,6 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
// 更新订单表的优惠金额; 手动修正金额;结算金额;总金额; // 更新订单表的优惠金额; 手动修正金额;结算金额;总金额;
if (isChange) { if (isChange) {
orderInfoEntity.setChangeMoney(totalChangeMoney); orderInfoEntity.setChangeMoney(totalChangeMoney);
orderInfoEntity.setPaymentStatus(PaymentStatus.WeiZhiFu);
} else { } else {
orderInfoEntity.setDiscountMoney(totalDiscountMoney); orderInfoEntity.setDiscountMoney(totalDiscountMoney);
orderInfoEntity.setReviseMoney(totalReviseMoney); orderInfoEntity.setReviseMoney(totalReviseMoney);
@ -1747,14 +1746,13 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
public void changePrice(ChangePriceParam param) { public void changePrice(ChangePriceParam param) {
OrderInfoEntity order = this.getById(param.getOrderId()); OrderInfoEntity order = this.getById(param.getOrderId());
Assert.notNull(order, () -> Exceptions.clierr("订单不存在")); Assert.notNull(order, () -> Exceptions.clierr("订单不存在"));
Assert.isFalse(null == order.getGoodsId(), () -> Exceptions.clierr("订单商品信息不存在"));
OrderGoodsEntity orderGoodsEntity = orderGoodsService.getById(order.getGoodsId());
String oldMoneyWay = orderGoodsEntity.getMoneyWay();
if (ChangePriceType.GOODS.getVal().equals(param.getChangePriceType())) { if (ChangePriceType.GOODS.getVal().equals(param.getChangePriceType())) {
// 变更产品与单价单价如果为空当0计算依然不加入订单付费项 // 变更产品与单价单价如果为空当0计算依然不加入订单付费项
Assert.isFalse(null == param.getGoodsId(), () -> Exceptions.clierr("产品ID不可为空")); Assert.isFalse(null == param.getGoodsId(), () -> Exceptions.clierr("产品ID不可为空"));
// 删除原来的订单产品数据 // 删除原来的订单产品数据
Assert.isFalse(null == order.getGoodsId(), () -> Exceptions.clierr("订单商品信息不存在"));
OrderGoodsEntity orderGoodsEntity = orderGoodsService.getById(order.getGoodsId());
String oldMoneyWay = orderGoodsEntity.getMoneyWay();
orderGoodsService.removeById(order.getGoodsId()); orderGoodsService.removeById(order.getGoodsId());
// 添加新的订单产品 // 添加新的订单产品
Long orderGoodsId = orderGoodsService.add(param.getGoodsId(), param.getUnitPrice()); Long orderGoodsId = orderGoodsService.add(param.getGoodsId(), param.getUnitPrice());
@ -1862,7 +1860,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
} }
} else if (MoneyWay.IN.getVal().equals(oldMoneyWay) && MoneyWay.IN.getVal().equals(newMoneyWay)) { } else if (MoneyWay.IN.getVal().equals(oldMoneyWay) && MoneyWay.IN.getVal().equals(newMoneyWay)) {
// 重新计算,多退少补 // 重新计算,多退少补
reSettlement(order); reSettlement(order, oldMoneyWay);
} }
// 更新产品不用考虑出厂问题,在称重时会重新计算费用并付费 // 更新产品不用考虑出厂问题,在称重时会重新计算费用并付费
} else if (ChangePriceType.SERVICE_FEE_PRICE.getVal().equals(param.getChangePriceType())) { } else if (ChangePriceType.SERVICE_FEE_PRICE.getVal().equals(param.getChangePriceType())) {
@ -1876,7 +1874,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
orderExpenseItemsService.updateById(itemsEntity); orderExpenseItemsService.updateById(itemsEntity);
} }
// 重新计算,多退少补 // 重新计算,多退少补
reSettlement(order); reSettlement(order, oldMoneyWay);
} else { } else {
throw Exceptions.clierr("清运服务费不可为空"); throw Exceptions.clierr("清运服务费不可为空");
} }
@ -1894,15 +1892,17 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
/** /**
* 退 * 退
*/ */
public void reSettlement(OrderInfoEntity order) { public void reSettlement(OrderInfoEntity order, String oldMoneyWay) {
// 计算费用 // 计算费用
updateOrderItems(order.getId(), 0, Boolean.TRUE); updateOrderItems(order.getId(), 0, Boolean.TRUE);
// 多退少补 获取改价后的订单信息 // 多退少补 获取改价后的订单信息
OrderInfoEntity newOrder = this.getById(order.getId()); OrderInfoEntity newOrder = this.getById(order.getId());
BigDecimal changeMoney = newOrder.getChangeMoney() == null ? BigDecimal.ZERO : newOrder.getChangeMoney(); BigDecimal changeMoney = newOrder.getChangeMoney() == null ? BigDecimal.ZERO : newOrder.getChangeMoney();
BigDecimal settleMoney = newOrder.getSettleMoney() == null ? BigDecimal.ZERO : newOrder.getSettleMoney(); BigDecimal settleMoney = newOrder.getSettleMoney() == null ? BigDecimal.ZERO : newOrder.getSettleMoney();
// 只有当订单已支付时,才需要多退少补 // 如果之前的计费方式就是入场付费,并且订单为已支付时,才需要多退少补;
if (PaymentStatus.YiZhiFu.getVal().equals(order.getPaymentStatus().getVal())) { // 如果之前的计费方式就是出场付费,勘料时一定是未支付,所以不必走下面的多退少补流程
if (MoneyWay.IN.getVal().equals(oldMoneyWay) && PaymentStatus.YiZhiFu.getVal().equals(order.getPaymentStatus().getVal())) {
// 比较改价后金额和结算金额 // 比较改价后金额和结算金额
if (changeMoney.compareTo(settleMoney) > 0) { if (changeMoney.compareTo(settleMoney) > 0) {
// 改价后金额大于结算金额,需要付款(多付) // 改价后金额大于结算金额,需要付款(多付)