List<BillPayment> paymentList = billPaymentMapper.selectPaymentByBillId(bill1.getId()); if (null != paymentList && 0 != paymentList.size()){ BigDecimal paymentSumMoney = new BigDecimal("0.00"); for (BillPayment payment : paymentList) { BigDecimal paymentMoney = new BigDecimal(String.valueOf(payment.getMoney())); paymentSumMoney = paymentSumMoney.add(paymentMoney); } if (paymentSumMoney.compareTo(bill1.getMoney()) == 1){ throw new SystemException("20001", new String[]{"账单金额不可小于付款总金额!"}); } if (paymentSumMoney.compareTo(bill1.getMoney()) == 0){ BillPayment billPayment = billPaymentMapper.selectPaymentByBillDesc(bill1.getId()); bill1.setUpdateId(user.getId()); bill1.setUpdateTime(new Date()); bill1.setStatus(Bill.STATUS_YES_PANYMENT); bill1.setPaymentTime(billPayment.getPaymentTime()); bill1.setBillStatus(Bill.BILL_STATUS_NORMAL); billMapper.updateByPrimaryKeySelective(bill1); } }
时间: 2024-02-14 22:31:07 浏览: 223
上面的代码片段中,涉及到了对泛型类型为`BillPayment`的`List`进行遍历和操作。根据代码的逻辑,可以大致解释如下:
1. 首先,通过`billPaymentMapper.selectPaymentByBillId(bill1.getId())`方法获取到一个`List`类型的账单支付记录列表`paymentList`。
2. 接下来,判断`paymentList`是否为null并且长度不为0,如果满足条件,则继续执行下面的逻辑。
3. 创建一个`BigDecimal`类型的变量`paymentSumMoney`,初始值为0.00,用于记录支付总金额。
4. 使用增强for循环遍历`paymentList`中的每个支付记录,对每个支付记录的金额进行累加计算,将结果存入`paymentSumMoney`中。
5. 如果支付总金额`paymentSumMoney`大于账单金额`bill1.getMoney()`,则抛出一个自定义的异常`SystemException("20001", new String[]{"账单金额不可小于付款总金额!"})`。
6. 如果支付总金额等于账单金额,则通过`billPaymentMapper.selectPaymentByBillDesc(bill1.getId())`方法获取到最新的一条支付记录,并将相关信息更新到账单对象`bill1`中。
7. 设置账单的更新人id、更新时间、状态等信息,并通过`billMapper.updateByPrimaryKeySelective(bill1)`方法更新账单信息。
上述代码片段主要是对账单支付记录进行处理和账单金额与支付总金额的比较。具体的业务逻辑可能还需要根据实际需求进行进一步完善。
阅读全文