From 6f8115dd2eadd8cb660118ac3a9ef06976a611f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Wed, 11 Dec 2024 11:25:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=8C=82=E8=B4=A6=E9=83=A8?= =?UTF-8?q?=E5=88=86=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TbCreditBuyerOrderServiceImpl.java | 167 +++++++----------- 1 file changed, 66 insertions(+), 101 deletions(-) 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 0b3775ca..e6e03ab4 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 @@ -314,113 +314,78 @@ public class TbCreditBuyerOrderServiceImpl extends ServiceImpllambdaUpdate() - .eq(TbCreditBuyerOrder::getId, dto.getId()) - .set(TbCreditBuyerOrder::getPaidAmount, dto.getPaidAmount()) - .set(TbCreditBuyerOrder::getStatus, dto.getStatus())); - - } else { - // 1.把退款归还至余额 - creditBuyer.setAccountBalance(NumberUtil.add(creditBuyer.getAccountBalance(), refundAmount)); - // 2.保存挂账退款记录 - TbCreditPaymentRecord record = new TbCreditPaymentRecord(); - record.setCreditBuyerId(creditBuyerId); - record.setOrderId(orderId); - record.setRepaymentAmount(refundAmount); - record.setPaymentMethod("挂账退款"); - record.setPaymentTime(new Date()); - record.setRemark(StrUtil.format("挂账订单:{},申请退款¥{}元,退款金额¥{}元已归还至账户余额,挂账额度已恢复。", orderInfo.getOrderNo(), refundAmount, refundAmount)); - record.setCreateTime(new Date()); - tbCreditPaymentRecordMapper.insert(record); - tbCreditBuyerService.updateById(creditBuyer); - // 3.修正挂账订单已还款数据 - dto.setPaidAmount(NumberUtil.sub(dto.getPaidAmount(), refundAmount)); - if (NumberUtil.equals(dto.getPaidAmount(), BigDecimal.ZERO)) { - dto.setStatus("unpaid"); - } else if (NumberUtil.isGreater(dto.getPaidAmount(), BigDecimal.ZERO) && NumberUtil.isLess(dto.getPaidAmount(), dto.getPayAmount())) { - dto.setStatus("partial"); - } - dto.setUnpaidAmount(NumberUtil.sub(dto.getPayAmount(), dto.getPaidAmount())); - tbCreditBuyerOrderMapper.update( - Wrappers.lambdaUpdate() - .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()); - 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()); - auto.setRemark(StrUtil.format("挂账订单:{},已挂账金额¥{},账户余额¥{},自动还款¥{}。", orderInfo.getOrderNo(), dto.getUnpaidAmount(), accountBalance, accountBalance)); - auto.setCreateTime(new Date()); - tbCreditPaymentRecordMapper.insert(auto); - } - tbCreditBuyerService.updateById(creditBuyer); - return true; + // 1.把退款归还至余额 + creditBuyer.setAccountBalance(NumberUtil.add(creditBuyer.getAccountBalance(), refundAmount)); + // 2.保存挂账退款记录 + TbCreditPaymentRecord record = new TbCreditPaymentRecord(); + record.setCreditBuyerId(creditBuyerId); + record.setOrderId(orderId); + record.setRepaymentAmount(NumberUtil.sub(BigDecimal.ZERO, refundAmount)); + record.setPaymentMethod("挂账退款"); + record.setPaymentTime(new Date()); + record.setRemark(StrUtil.format("挂账订单:{},申请退款¥{}元,退款金额¥{}元已转移至账户余额,挂账额度已恢复。", orderInfo.getOrderNo(), refundAmount, refundAmount)); + record.setCreateTime(new Date()); + tbCreditPaymentRecordMapper.insert(record); + tbCreditBuyerService.updateById(creditBuyer); + // 3.修正挂账订单已还款数据 + dto.setPaidAmount(NumberUtil.sub(dto.getPaidAmount(), refundAmount)); + if (NumberUtil.equals(dto.getPaidAmount(), BigDecimal.ZERO)) { + dto.setStatus("unpaid"); + } else if (NumberUtil.isGreater(dto.getPaidAmount(), BigDecimal.ZERO) && NumberUtil.isLess(dto.getPaidAmount(), dto.getPayAmount())) { + dto.setStatus("partial"); } - return false; + dto.setUnpaidAmount(NumberUtil.sub(dto.getPayAmount(), dto.getPaidAmount())); + tbCreditBuyerOrderMapper.update( + Wrappers.lambdaUpdate() + .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()); + 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()); + auto.setRemark(StrUtil.format("挂账订单:{},已挂账金额¥{},账户余额¥{},自动还款¥{}。", orderInfo.getOrderNo(), dto.getUnpaidAmount(), accountBalance, accountBalance)); + auto.setCreateTime(new Date()); + tbCreditPaymentRecordMapper.insert(auto); + } + tbCreditBuyerService.updateById(creditBuyer); + return true; } }