小改一下

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) {
orderInfoEntity.setChangeMoney(totalChangeMoney);
orderInfoEntity.setPaymentStatus(PaymentStatus.WeiZhiFu);
} else {
orderInfoEntity.setDiscountMoney(totalDiscountMoney);
orderInfoEntity.setReviseMoney(totalReviseMoney);
@ -1747,14 +1746,13 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
public void changePrice(ChangePriceParam param) {
OrderInfoEntity order = this.getById(param.getOrderId());
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())) {
// 变更产品与单价单价如果为空当0计算依然不加入订单付费项
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());
// 添加新的订单产品
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)) {
// 重新计算,多退少补
reSettlement(order);
reSettlement(order, oldMoneyWay);
}
// 更新产品不用考虑出厂问题,在称重时会重新计算费用并付费
} else if (ChangePriceType.SERVICE_FEE_PRICE.getVal().equals(param.getChangePriceType())) {
@ -1876,7 +1874,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
orderExpenseItemsService.updateById(itemsEntity);
}
// 重新计算,多退少补
reSettlement(order);
reSettlement(order, oldMoneyWay);
} else {
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);
// 多退少补 获取改价后的订单信息
OrderInfoEntity newOrder = this.getById(order.getId());
BigDecimal changeMoney = newOrder.getChangeMoney() == null ? BigDecimal.ZERO : newOrder.getChangeMoney();
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) {
// 改价后金额大于结算金额,需要付款(多付)