短驳入增加营收

master
ljw 2025-12-22 14:35:47 +08:00
parent 8110090154
commit ce86bb5f95
4 changed files with 67 additions and 36 deletions

View File

@ -16,6 +16,7 @@ public enum MoneyChangeCategory implements DictStr {
DingDanTiaoZhang("DingDanTiaoZhang", "订单调账"), DingDanTiaoZhang("DingDanTiaoZhang", "订单调账"),
DingDanKouKuan("DingDanKouKuan", "订单扣款"), DingDanKouKuan("DingDanKouKuan", "订单扣款"),
DingDanTuiKuan("DingDanTuiKuan", "订单退款"), DingDanTuiKuan("DingDanTuiKuan", "订单退款"),
DuanBoYingShou("DuanBoYingShou", "短驳营收"),
; ;
private final String val; private final String val;
private final String txt; private final String txt;

View File

@ -7,6 +7,9 @@ import lombok.experimental.Accessors;
import java.math.BigDecimal; import java.math.BigDecimal;
/**
* @author ljw
*/
@Getter @Getter
@Setter @Setter
@ToString @ToString
@ -20,6 +23,7 @@ public class PaymentContextResult {
private Long companyUserId; private Long companyUserId;
private Long companyAccountId; private Long companyAccountId;
private BigDecimal companyBalance; private BigDecimal companyBalance;
private BigDecimal revenue;
private String settlementWay; private String settlementWay;

View File

@ -881,7 +881,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
OrderGoodsEntity entity = orderGoodsService.getById(orderInfo.getGoodsId()); OrderGoodsEntity entity = orderGoodsService.getById(orderInfo.getGoodsId());
Assert.notNull(entity, () -> Exceptions.clierr("产品不存在")); Assert.notNull(entity, () -> Exceptions.clierr("产品不存在"));
if (MoneyWay.IN.getVal().equals(entity.getMoneyWay())) { if (MoneyWay.IN.getVal().equals(entity.getMoneyWay()) && OrderCategory.PuTong.equals(orderInfo.getOrderCategory())) {
// 入场付费无称重,不需要更新付费项 // 入场付费无称重,不需要更新付费项
// 处理公司支付 // 处理公司支付
handleCompanyPay(orderInfo, Boolean.TRUE, new BigDecimal("0"), Boolean.FALSE); handleCompanyPay(orderInfo, Boolean.TRUE, new BigDecimal("0"), Boolean.FALSE);
@ -937,15 +937,43 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
payMoney = changeMoney; payMoney = changeMoney;
} }
if (payMoney != null && payMoney.compareTo(BigDecimal.ZERO) > 0) { if (payMoney != null && payMoney.compareTo(BigDecimal.ZERO) > 0) {
if (!SettlementWay.CASH.getVal().equals(ctx.getSettlementWay())) { if (OrderCategory.PuTong.equals(orderInfo.getOrderCategory())) {
String way = SettlementWay.BALANCE.getVal().equals(ctx.getSettlementWay()) ? if (!SettlementWay.CASH.getVal().equals(ctx.getSettlementWay())) {
SettlementWay.BALANCE.getTxt() : SettlementWay.MONTH.getTxt(); String way = SettlementWay.BALANCE.getVal().equals(ctx.getSettlementWay()) ?
BigDecimal oldBalance = ctx.getCompanyBalance(); SettlementWay.BALANCE.getTxt() : SettlementWay.MONTH.getTxt();
BigDecimal newBalance = oldBalance.subtract(payMoney); BigDecimal oldBalance = ctx.getCompanyBalance();
// 更新账户余额(支持负数余额) BigDecimal newBalance = oldBalance.subtract(payMoney);
// 更新账户余额(支持负数余额)
MoneyAccountEntity companyAccount = new MoneyAccountEntity()
.setId(ctx.getCompanyAccountId())
.setMoney(newBalance);
moneyAccountService.updateById(companyAccount);
// 记录资金变动明细
MoneyChangeDetailEntity changeDetail = new MoneyChangeDetailEntity()
.setCompanyId(ctx.getTransCompanyId())
.setOrderId(orderInfo.getId())
.setMoneyAccountId(companyAccount.getId())
.setOldMoney(oldBalance)
// 扣减为负数
.setDelta(payMoney.negate())
.setNewMoney(newBalance)
.setMoneyChangeCategory(MoneyChangeCategory.DingDanKouKuan)
.setMemo("订单支付扣款,订单号:" + orderInfo.getSn() + ",结算方式:" + way);
moneyChangeDetailService.save(changeDetail);
log.info("公司账户扣减成功用户ID{},扣减金额:{},余额:{} -> {},结算方式:{}",
ctx.getCompanyUserId(), payMoney, oldBalance, newBalance, ctx.getSettlementWay());
}
} else if (OrderCategory.DuanBoRu.equals(orderInfo.getOrderCategory())) {
// 短驳入订单,增加营收
BigDecimal oldRevenue = ctx.getRevenue();
BigDecimal newRevenue = oldRevenue.add(payMoney);
// 更新账户营收
MoneyAccountEntity companyAccount = new MoneyAccountEntity() MoneyAccountEntity companyAccount = new MoneyAccountEntity()
.setId(ctx.getCompanyAccountId()) .setId(ctx.getCompanyAccountId())
.setMoney(newBalance); .setRevenue(newRevenue);
moneyAccountService.updateById(companyAccount); moneyAccountService.updateById(companyAccount);
// 记录资金变动明细 // 记录资金变动明细
@ -953,31 +981,30 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
.setCompanyId(ctx.getTransCompanyId()) .setCompanyId(ctx.getTransCompanyId())
.setOrderId(orderInfo.getId()) .setOrderId(orderInfo.getId())
.setMoneyAccountId(companyAccount.getId()) .setMoneyAccountId(companyAccount.getId())
.setOldMoney(oldBalance) .setOldMoney(oldRevenue)
.setDelta(payMoney.negate()) // 扣减为负数 // 扣减为负数
.setNewMoney(newBalance) .setDelta(payMoney)
.setMoneyChangeCategory(MoneyChangeCategory.DingDanKouKuan) .setNewMoney(newRevenue)
.setMemo("订单支付扣款,订单号:" + orderInfo.getSn() + ",结算方式:" + way); .setMoneyChangeCategory(MoneyChangeCategory.DuanBoYingShou)
.setMemo("短驳营收,订单号:" + orderInfo.getSn());
moneyChangeDetailService.save(changeDetail); moneyChangeDetailService.save(changeDetail);
log.info("公司账户扣减成功用户ID{},扣减金额:{},余额:{} -> {},结算方式:{}", log.info("公司营收增加成功用户ID{},扣减金额:{},余额:{} -> {}",
ctx.getCompanyUserId(), payMoney, oldBalance, newBalance, ctx.getSettlementWay()); ctx.getCompanyUserId(), payMoney, oldRevenue, newRevenue);
}
// 更新订单支付状态为已支付 // 更新订单支付状态为已支付
OrderInfoEntity entity = new OrderInfoEntity(); OrderInfoEntity entity = new OrderInfoEntity();
entity.setId(orderInfo.getId()); entity.setId(orderInfo.getId());
entity.setPaymentStatus(PaymentStatus.YiZhiFu); entity.setPaymentStatus(PaymentStatus.YiZhiFu);
entity.setSettlementWay(ctx.getSettlementWay()); entity.setSettlementWay(ctx.getSettlementWay());
entity.setPayTime(LocalDateTime.now()); entity.setPayTime(LocalDateTime.now());
if (!isIn) { if (!isIn) {
entity.setOrderStatus(OrderStatus.YiWanCheng); entity.setOrderStatus(OrderStatus.YiWanCheng);
this.updateById(entity); this.updateById(entity);
return true; return true;
} else { } else {
this.updateById(entity); this.updateById(entity);
}
} }
} else { } else {
// 如果支付金额为0则直接改状态 // 如果支付金额为0则直接改状态
@ -1250,11 +1277,6 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
.setOrderStatus(OrderStatus.QingYunZhong) .setOrderStatus(OrderStatus.QingYunZhong)
.setTransTime(orderInfoEntity.getTransTime()) .setTransTime(orderInfoEntity.getTransTime())
); );
if (MoneyWay.IN.getVal().equals(entity.getMoneyWay())) {
// 入场付费无称重,不需要更新付费项
// 处理公司支付
handleCompanyPay(this.getById(targetOrderId), Boolean.TRUE, new BigDecimal("0"), Boolean.FALSE);
}
} else { } else {
baseMapper.busyDriver(orderInfoEntity.getDriverId(), Boolean.FALSE); baseMapper.busyDriver(orderInfoEntity.getDriverId(), Boolean.FALSE);
baseMapper.busyTruck(orderInfoEntity.getTruckId(), Boolean.FALSE); baseMapper.busyTruck(orderInfoEntity.getTruckId(), Boolean.FALSE);
@ -1290,10 +1312,13 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
}); });
// 出厂付费 // 出厂付费
if (MoneyWay.OUT.getVal().equals(entity.getMoneyWay())) { if (OrderCategory.PuTong.equals(orderInfoEntity.getOrderCategory()) && MoneyWay.OUT.getVal().equals(entity.getMoneyWay())) {
// 计算费用,出厂付费可能需要称重,需要更新付费项 // 计算费用,出厂付费可能需要称重,需要更新付费项
// updateOrderItems(orderInfoEntity.getId(), settleWeight, Boolean.FALSE); // updateOrderItems(orderInfoEntity.getId(), settleWeight, Boolean.FALSE);
// 扣费
return handleCompanyPay(orderInfoEntity, Boolean.FALSE, new BigDecimal("0"), Boolean.FALSE);
} else if (OrderCategory.DuanBoRu.equals(orderInfoEntity.getOrderCategory())) {
// 扣费 // 扣费
return handleCompanyPay(orderInfoEntity, Boolean.FALSE, new BigDecimal("0"), Boolean.FALSE); return handleCompanyPay(orderInfoEntity, Boolean.FALSE, new BigDecimal("0"), Boolean.FALSE);
} }

View File

@ -321,6 +321,7 @@
bc.user_id AS companyUserId, bc.user_id AS companyUserId,
ma1.id AS companyAccountId, ma1.id AS companyAccountId,
ma1.money AS companyBalance, ma1.money AS companyBalance,
ma1.revenue,
bc.settlement_way, bc.settlement_way,
sua.wechat_openid, sua.wechat_openid,
a.refund_money, a.refund_money,