短驳入增加营收
parent
8110090154
commit
ce86bb5f95
|
|
@ -16,6 +16,7 @@ public enum MoneyChangeCategory implements DictStr {
|
|||
DingDanTiaoZhang("DingDanTiaoZhang", "订单调账"),
|
||||
DingDanKouKuan("DingDanKouKuan", "订单扣款"),
|
||||
DingDanTuiKuan("DingDanTuiKuan", "订单退款"),
|
||||
DuanBoYingShou("DuanBoYingShou", "短驳营收"),
|
||||
;
|
||||
private final String val;
|
||||
private final String txt;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ import lombok.experimental.Accessors;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author ljw
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
|
|
@ -20,6 +23,7 @@ public class PaymentContextResult {
|
|||
private Long companyUserId;
|
||||
private Long companyAccountId;
|
||||
private BigDecimal companyBalance;
|
||||
private BigDecimal revenue;
|
||||
|
||||
private String settlementWay;
|
||||
|
||||
|
|
|
|||
|
|
@ -881,7 +881,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
OrderGoodsEntity entity = orderGoodsService.getById(orderInfo.getGoodsId());
|
||||
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);
|
||||
|
|
@ -937,15 +937,43 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
payMoney = changeMoney;
|
||||
}
|
||||
if (payMoney != null && payMoney.compareTo(BigDecimal.ZERO) > 0) {
|
||||
if (!SettlementWay.CASH.getVal().equals(ctx.getSettlementWay())) {
|
||||
String way = SettlementWay.BALANCE.getVal().equals(ctx.getSettlementWay()) ?
|
||||
SettlementWay.BALANCE.getTxt() : SettlementWay.MONTH.getTxt();
|
||||
BigDecimal oldBalance = ctx.getCompanyBalance();
|
||||
BigDecimal newBalance = oldBalance.subtract(payMoney);
|
||||
// 更新账户余额(支持负数余额)
|
||||
if (OrderCategory.PuTong.equals(orderInfo.getOrderCategory())) {
|
||||
if (!SettlementWay.CASH.getVal().equals(ctx.getSettlementWay())) {
|
||||
String way = SettlementWay.BALANCE.getVal().equals(ctx.getSettlementWay()) ?
|
||||
SettlementWay.BALANCE.getTxt() : SettlementWay.MONTH.getTxt();
|
||||
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()
|
||||
.setId(ctx.getCompanyAccountId())
|
||||
.setMoney(newBalance);
|
||||
.setRevenue(newRevenue);
|
||||
moneyAccountService.updateById(companyAccount);
|
||||
|
||||
// 记录资金变动明细
|
||||
|
|
@ -953,31 +981,30 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
.setCompanyId(ctx.getTransCompanyId())
|
||||
.setOrderId(orderInfo.getId())
|
||||
.setMoneyAccountId(companyAccount.getId())
|
||||
.setOldMoney(oldBalance)
|
||||
.setDelta(payMoney.negate()) // 扣减为负数
|
||||
.setNewMoney(newBalance)
|
||||
.setMoneyChangeCategory(MoneyChangeCategory.DingDanKouKuan)
|
||||
.setMemo("订单支付扣款,订单号:" + orderInfo.getSn() + ",结算方式:" + way);
|
||||
.setOldMoney(oldRevenue)
|
||||
// 扣减为负数
|
||||
.setDelta(payMoney)
|
||||
.setNewMoney(newRevenue)
|
||||
.setMoneyChangeCategory(MoneyChangeCategory.DuanBoYingShou)
|
||||
.setMemo("短驳营收,订单号:" + orderInfo.getSn());
|
||||
|
||||
moneyChangeDetailService.save(changeDetail);
|
||||
|
||||
log.info("公司账户扣减成功,用户ID:{},扣减金额:{},余额:{} -> {},结算方式:{}",
|
||||
ctx.getCompanyUserId(), payMoney, oldBalance, newBalance, ctx.getSettlementWay());
|
||||
|
||||
// 更新订单支付状态为已支付
|
||||
OrderInfoEntity entity = new OrderInfoEntity();
|
||||
entity.setId(orderInfo.getId());
|
||||
entity.setPaymentStatus(PaymentStatus.YiZhiFu);
|
||||
entity.setSettlementWay(ctx.getSettlementWay());
|
||||
entity.setPayTime(LocalDateTime.now());
|
||||
if (!isIn) {
|
||||
entity.setOrderStatus(OrderStatus.YiWanCheng);
|
||||
this.updateById(entity);
|
||||
return true;
|
||||
} else {
|
||||
this.updateById(entity);
|
||||
}
|
||||
|
||||
log.info("公司营收增加成功,用户ID:{},扣减金额:{},余额:{} -> {}",
|
||||
ctx.getCompanyUserId(), payMoney, oldRevenue, newRevenue);
|
||||
}
|
||||
// 更新订单支付状态为已支付
|
||||
OrderInfoEntity entity = new OrderInfoEntity();
|
||||
entity.setId(orderInfo.getId());
|
||||
entity.setPaymentStatus(PaymentStatus.YiZhiFu);
|
||||
entity.setSettlementWay(ctx.getSettlementWay());
|
||||
entity.setPayTime(LocalDateTime.now());
|
||||
if (!isIn) {
|
||||
entity.setOrderStatus(OrderStatus.YiWanCheng);
|
||||
this.updateById(entity);
|
||||
return true;
|
||||
} else {
|
||||
this.updateById(entity);
|
||||
}
|
||||
} else {
|
||||
// 如果支付金额为0,则直接改状态
|
||||
|
|
@ -1250,11 +1277,6 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
.setOrderStatus(OrderStatus.QingYunZhong)
|
||||
.setTransTime(orderInfoEntity.getTransTime())
|
||||
);
|
||||
if (MoneyWay.IN.getVal().equals(entity.getMoneyWay())) {
|
||||
// 入场付费无称重,不需要更新付费项
|
||||
// 处理公司支付
|
||||
handleCompanyPay(this.getById(targetOrderId), Boolean.TRUE, new BigDecimal("0"), Boolean.FALSE);
|
||||
}
|
||||
} else {
|
||||
baseMapper.busyDriver(orderInfoEntity.getDriverId(), 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);
|
||||
|
||||
// 扣费
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -321,6 +321,7 @@
|
|||
bc.user_id AS companyUserId,
|
||||
ma1.id AS companyAccountId,
|
||||
ma1.money AS companyBalance,
|
||||
ma1.revenue,
|
||||
bc.settlement_way,
|
||||
sua.wechat_openid,
|
||||
a.refund_money,
|
||||
|
|
|
|||
Loading…
Reference in New Issue