From 5706757a0bcec3318c8c460d34c1827788065d7c Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 12 三月 2025 13:53:47 +0800 Subject: [PATCH] Merge branch 'xizang-changyun' of https://gitee.com/xiaochen991015/xizang --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java | 82 +++++++++++++++++++++++++++++------------ 1 files changed, 58 insertions(+), 24 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java index 6fab5c1..0376220 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java @@ -241,42 +241,72 @@ @Override @Transactional(rollbackFor = Exception.class) public boolean checkOfflinePay(OfflinePayCheckDto dto) { - TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId()); TBillDto bill = getDetailByBillId(dto.getBillId()); - if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){ - throw new ServiceException("该流水已无可抵扣剩余金额"); - } - if (bankflow.getRemainingMoney().compareTo(dto.getAmount())<0){ - throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额"); - } - //如果实付金额大于欠费金额 - if (dto.getAmount().compareTo(bill.getOutstandingMoney())>0){ - throw new ServiceException("实付金额不能高于该账单欠费金额"); - } + if (dto.getPayType()==1){ //银行 + if (StringUtils.isEmpty(dto.getFlowId())){ + throw new ServiceException("银行流水ID不能为空"); + } + TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId()); + if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){ + throw new ServiceException("该流水已无可抵扣剩余金额"); + } + if (bankflow.getRemainingMoney().compareTo(dto.getAmount())<0){ + throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额"); + } + //如果实付金额大于欠费金额 + if (dto.getAmount().compareTo(bill.getOutstandingMoney())>0){ + throw new ServiceException("实付金额不能高于该账单欠费金额"); + } + TBill billSave = new TBill(); + billSave.setId(bill.getId()); + billSave.setPayFeesMoney(dto.getAmount()); + billSave.setBankSerialNumber(bankflow.getBankSerialNumber()); + billSave.setPayFeesTime(bankflow.getPayTime()); + billSave.setVoucher(dto.getVoucher()); + billSave.setPayFeesType(2); + TBill back = lockAndUpdateInfo(billSave, 2); + TBankFlow saveBankFlow = new TBankFlow(); + saveBankFlow.setId(bankflow.getId()); + saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount())); + BigDecimal subtract = bankflow.getRemainingMoney().subtract(dto.getAmount()); + saveBankFlow.setRemainingMoney(subtract); + if (BigDecimal.ZERO.compareTo(subtract) == 0){ + saveBankFlow.setFlowStatus(1); + } + tBankFlowService.updateById(saveBankFlow); + //更新银行流水的已抵扣金额和剩余可抵扣金额 + //存流水 + TFlowManagement save = new TFlowManagement(); + save.setPayType(3); + save.setPayer(dto.getPayer()); + save.setPayTime(bankflow.getPayTime()); + save.setSysSerialNumber(OrderNos.getDid(30)); + save.setBankSerialNumber(bankflow.getBankSerialNumber()); + save.setFlowType(2); + save.setPaymentBillId(back.getId()); + save.setDeductionMoney(back.getDeductionMoney()); + save.setFlowMoney(dto.getAmount()); + save.setRemainingMoney(back.getOutstandingMoney()); + save.setPreOutstand(back.getPreOutstand()); + tFlowManagementService.save(save); + return true; + } + //现金支付 TBill billSave = new TBill(); billSave.setId(bill.getId()); billSave.setPayFeesMoney(dto.getAmount()); - billSave.setBankSerialNumber(bankflow.getBankSerialNumber()); - billSave.setPayFeesTime(bankflow.getPayTime()); + billSave.setPayFeesTime(dto.getPayTime()!=null?dto.getPayTime():DateUtils.dateToLocalDateTime(new Date())); billSave.setVoucher(dto.getVoucher()); billSave.setPayFeesType(2); TBill back = lockAndUpdateInfo(billSave, 2); - //更新银行流水的已抵扣金额和剩余可抵扣金额 - TBankFlow saveBankFlow = new TBankFlow(); - saveBankFlow.setId(bankflow.getId()); - saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount())); - saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount())); - tBankFlowService.updateById(saveBankFlow); - //存流水 TFlowManagement save = new TFlowManagement(); save.setPayType(3); save.setPayer(dto.getPayer()); - save.setPayTime(bankflow.getPayTime()); + save.setPayTime(billSave.getPayFeesTime()); save.setSysSerialNumber(OrderNos.getDid(30)); - save.setBankSerialNumber(bankflow.getBankSerialNumber()); - save.setFlowType(2); + save.setFlowType(1); save.setPaymentBillId(back.getId()); save.setDeductionMoney(back.getDeductionMoney()); save.setFlowMoney(dto.getAmount()); @@ -483,7 +513,11 @@ TBankFlow saveBankFlow = new TBankFlow(); saveBankFlow.setId(bankflow.getId()); saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount())); - saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount())); + BigDecimal subtract = bankflow.getRemainingMoney().subtract(dto.getAmount()); + saveBankFlow.setRemainingMoney(subtract); + if (BigDecimal.ZERO.compareTo(subtract) == 0){ + saveBankFlow.setFlowStatus(1); + } tBankFlowService.updateById(saveBankFlow); } //存流水 -- Gitblit v1.7.1