| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | import com.ruoyi.common.utils.DateUtils; |
| | |
| | | result.setTotalAmountRmb(totalReceivableAmount); |
| | | result.setTotalAmountHkd(totalAmountHkd); |
| | | result.setDetailList(detailList); |
| | | result.setIds(ids); |
| | | |
| | | return result; |
| | | } |
| | |
| | | } |
| | | |
| | | // 4. 保存主账单记录 |
| | | receivableBillManagementService.insertReceivableBillManagement(billManagement); |
| | | Integer billId = billManagement.getId(); |
| | | int i = receivableBillManagementService.insertReceivableBillManagement(billManagement); |
| | | |
| | | // 5. 创建应收账单结算明细 |
| | | List<ReceivableBillSettlementDetail> detailList = new java.util.ArrayList<>(); |
| | | for (ReceivableFeeDetail feeDetail : statisticsVo.getDetailList()) { |
| | | ReceivableBillSettlementDetail settlementDetail = new ReceivableBillSettlementDetail(); |
| | | settlementDetail.setBillId(billId); |
| | | // 5. 更新应收费用主表的关联账单编号 |
| | | if (statisticsVo.getIds() != null && statisticsVo.getIds().length > 0) { |
| | | // 获取生成的账单系统编号 |
| | | String billSystemNo = billManagement.getSystemNo(); |
| | | |
| | | // 根据账单类型设置明细金额 |
| | | if (billType == 0) { |
| | | // 人民币账单使用原金额 |
| | | settlementDetail.setReceiptAmount(feeDetail.getBillingAmount()); |
| | | } else { |
| | | // 港币账单转换金额 |
| | | settlementDetail.setReceiptAmount(feeDetail.getBillingAmount().divide(statisticsVo.getRate(), 2, RoundingMode.HALF_UP)); |
| | | // 批量更新应收费用主表的关联账单编号 |
| | | List<ReceivableFeeManagement> feeManagements = new ArrayList<>(); |
| | | for (Integer feeId : statisticsVo.getIds()) { |
| | | ReceivableFeeManagement feeManagement = new ReceivableFeeManagement(); |
| | | feeManagement.setId(feeId); |
| | | feeManagement.setRelatedBillNo(billSystemNo); |
| | | feeManagements.add(feeManagement); |
| | | } |
| | | |
| | | // 设置其他明细信息 |
| | | settlementDetail.setSettlementMethod("0"); // 默认为空,后续可以更新 |
| | | settlementDetail.setCreateTime(DateUtils.getNowDate()); |
| | | |
| | | detailList.add(settlementDetail); |
| | | // 调用批量更新方法 |
| | | updateReceivableFeeManagementBatch(feeManagements); |
| | | } |
| | | |
| | | // 6. 批量保存明细记录 |
| | | if (!detailList.isEmpty()) { |
| | | receivableBillSettlementDetailService.insertReceivableBillSettlementDetailBatch(detailList); |
| | | } |
| | | |
| | | return billId; |
| | | return i; |
| | | } |
| | | } |
| | | } |