diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbCreditBuyerOrderServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbCreditBuyerOrderServiceImpl.java index fb7731d3..0e4b347a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbCreditBuyerOrderServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbCreditBuyerOrderServiceImpl.java @@ -294,6 +294,7 @@ public class TbCreditBuyerOrderServiceImpl extends ServiceImpllambdaUpdate() - .eq(TbCreditBuyerOrder::getId, dto.getId()) - .set(TbCreditBuyerOrder::getPaidAmount, dto.getPaidAmount()) - .set(TbCreditBuyerOrder::getStatus, dto.getStatus())); - // 4.自动还款 - BigDecimal accountBalance = creditBuyer.getAccountBalance(); - BigDecimal sub = NumberUtil.sub(creditBuyer.getAccountBalance(), dto.getUnpaidAmount()); - // 4.1.可以还清 - if (NumberUtil.isGreaterOrEqual(sub, BigDecimal.ZERO)) { - creditBuyer.setAccountBalance(sub); - tbCreditBuyerOrderMapper.update( - Wrappers.lambdaUpdate() - .eq(TbCreditBuyerOrder::getId, dto.getId()) - .set(TbCreditBuyerOrder::getPaidAmount, NumberUtil.add(dto.getPaidAmount(), dto.getUnpaidAmount())) - .set(TbCreditBuyerOrder::getStatus, "paid")); - TbCreditPaymentRecord auto = new TbCreditPaymentRecord(); - auto.setCreditBuyerId(creditBuyerId); - auto.setOrderId(orderId); - auto.setRepaymentAmount(dto.getUnpaidAmount()); - auto.setPaymentMethod("自动还款"); - auto.setPaymentTime(new Date()); - dto.setUnpaidAmount(NumberUtil.sub(dto.getPayAmount(), NumberUtil.add(dto.getPaidAmount(), dto.getUnpaidAmount()))); - auto.setRemark(StrUtil.format("挂账订单:{},挂账金额¥{},账户余额¥{},自动还款¥{}。", orderInfo.getOrderNo(), dto.getUnpaidAmount(), accountBalance, dto.getUnpaidAmount())); - auto.setCreateTime(new Date()); - tbCreditPaymentRecordMapper.insert(auto); - } else { - // 4.2.可以还部分 - creditBuyer.setAccountBalance(BigDecimal.ZERO); - tbCreditBuyerOrderMapper.update( - Wrappers.lambdaUpdate() - .eq(TbCreditBuyerOrder::getId, dto.getId()) - .set(TbCreditBuyerOrder::getPaidAmount, NumberUtil.add(dto.getPaidAmount(), accountBalance)) - .set(TbCreditBuyerOrder::getStatus, "partial")); - TbCreditPaymentRecord auto = new TbCreditPaymentRecord(); - auto.setCreditBuyerId(creditBuyerId); - auto.setOrderId(orderId); - auto.setRepaymentAmount(accountBalance); - auto.setPaymentMethod("自动还款"); - auto.setPaymentTime(new Date()); - dto.setUnpaidAmount(NumberUtil.sub(dto.getPayAmount(), NumberUtil.add(dto.getPaidAmount(), accountBalance))); - auto.setRemark(StrUtil.format("挂账订单:{},挂账金额¥{},账户余额¥{},自动还款¥{}。", orderInfo.getOrderNo(), dto.getUnpaidAmount(), accountBalance, accountBalance)); - auto.setCreateTime(new Date()); - tbCreditPaymentRecordMapper.insert(auto); - } - tbCreditBuyerService.updateById(creditBuyer); return true; } }