List<BillPayment> paymentList = billPaymentMapper.selectPaymentByBillId(bill1.getId()); if (paymentList != null && paymentList.size() != 0){ BigDecimal paymentSumMoney = new BigDecimal("0.00"); for (BillPayment payment : paymentList) { BigDecimal paymentMoney = new BigDecimal(String.valueOf(payment.getMoney())); paymentSumMoney = paymentSumMoney.add(paymentMoney); } }
时间: 2024-02-14 19:31:06 浏览: 98
这段代码的作用是查询指定账单ID下的账单支付列表,并计算支付总金额。首先,通过调用billPaymentMapper的selectPaymentByBillId方法,传入bill1.getId()作为参数,获取支付列表paymentList。然后,判断paymentList是否不为空且长度不为零。如果满足条件,则初始化一个金额总和为0的BigDecimal变量paymentSumMoney。接下来,使用增强型for循环遍历paymentList中的每个账单支付对象,将每个支付金额payment.getMoney()转换为BigDecimal类型,并使用add方法将其累加到paymentSumMoney中。最后,计算完成后,可以在此代码段之后进行相应的操作。
相关问题
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); } }
上面的代码片段中,涉及到了对泛型类型为`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)`方法更新账单信息。
上述代码片段主要是对账单支付记录进行处理和账单金额与支付总金额的比较。具体的业务逻辑可能还需要根据实际需求进行进一步完善。
List<EcpiTree> ecpiTrees = ecpiTreeMapper.selectList(null); 的数据拷贝到 List<TreeItem> treeItemList = new ArrayList<TreeItem>();
可以使用 Java 8 的流操作来进行转换:
```java
List<EcpiTree> ecpiTrees = ecpiTreeMapper.selectList(null);
List<TreeItem> treeItemList = ecpiTrees.stream()
.map(tree -> new TreeItem(tree.getId(), tree.getName(), tree.getParentId()))
.collect(Collectors.toList());
```
这里假设 `TreeItem` 有一个带参数的构造函数来创建 `TreeItem` 对象,参数依次为 `id`、`name` 和 `parentId`。使用 `map` 操作将 `EcpiTree` 对象转换为 `TreeItem` 对象,然后使用 `collect` 操作将其收集到一个新的 `List` 中。
阅读全文