| | |
| | | package com.ruoyi.cwgl.service.impl; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | |
| | | Integer id = estimatedReceivableBill.getId(); |
| | | EstimatedReceivableBill oldData = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(id); |
| | | //应结算金额 |
| | | Long totalAmount = oldData.getTotalAmount()==null?0L:oldData.getTotalAmount(); |
| | | BigDecimal totalAmount = oldData.getTotalAmount()==null?BigDecimal.ZERO:oldData.getTotalAmount(); |
| | | //已结算金额 |
| | | Long settledAmount = oldData.getSettledAmount()==null?0L:oldData.getSettledAmount(); |
| | | BigDecimal settledAmount = oldData.getSettledAmount()==null?BigDecimal.ZERO:oldData.getSettledAmount(); |
| | | //当前提交金额 |
| | | Long settlementAmount = estimatedReceivableBill.getSettlementAmount(); |
| | | BigDecimal settlementAmount = estimatedReceivableBill.getSettlementAmount(); |
| | | EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog(); |
| | | |
| | | estimatedReceivableBill.setSettledAmount(settlementAmount); |
| | |
| | | estimatedReceivableBillLog.setBillId(estimatedReceivableBill.getId()); |
| | | estimatedReceivableBillLog.setCreateBy(SecurityUtils.getUsername()); |
| | | estimatedReceivableBillLog.setOperation("本次提交金额"+ settlementAmount); |
| | | estimatedReceivableBillLog.setFileName(estimatedReceivableBill.getAttachment()); |
| | | logService.insertEstimatedReceivableBillLog(estimatedReceivableBillLog); |
| | | settledAmount = settledAmount+settlementAmount; |
| | | |
| | | List<String>dispatchNos =pendingSettlementBusinessMapper.selectPendingSettlementBusinessDispatchNos(estimatedReceivableBill.getId()); |
| | | if (settledAmount>totalAmount){ |
| | | // 检查当前提交金额+已结算金额是否超过应结算金额 |
| | | if (settlementAmount.add(settledAmount).compareTo(totalAmount) > 0) { |
| | | // 超过应结算金额,抛出异常或处理错误 |
| | | throw new RuntimeException("当前提交金额加上已结算金额不能超过应结算金额"); |
| | | } |
| | | if (settlementAmount.add(settledAmount).compareTo(totalAmount) == 0) { |
| | | //已结算大于应计算金额为已结算 |
| | | estimatedReceivableBill.setStatus(2); |
| | | estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,3); |
| | | pendingSettlementBusinessMapper.updateEstimatedReceivableBillStatus(dispatchNos,3); |
| | | }else { |
| | | //否则部分结算 |
| | | estimatedReceivableBill.setStatus(1); |
| | | estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,2); |
| | | pendingSettlementBusinessMapper.updateEstimatedReceivableBillStatus(dispatchNos,2); |
| | | } |
| | | settledAmount = settledAmount.add(settlementAmount); |
| | | estimatedReceivableBill.setSettledAmount(settledAmount); |
| | | return estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill); |
| | | } |
| | | |
| | |
| | | EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(billId); |
| | | estimatedReceivableBill.setDispatchCount(estimatedReceivableBill.getDispatchCount()-1); |
| | | //应结算金额修改 |
| | | Long totalAmount = estimatedReceivableBill.getTotalAmount(); |
| | | estimatedReceivableBill.setTotalAmount(totalAmount-pendingSettlementBusiness.getEstimatedTotalIncome()); |
| | | BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount(); |
| | | estimatedReceivableBill.setTotalAmount(totalAmount.subtract(pendingSettlementBusiness.getEstimatedTotalIncome())); |
| | | EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog(); |
| | | estimatedReceivableBillLog.setCreateTime(new Date()); |
| | | estimatedReceivableBillLog.setBillId(billId); |