| | |
| | | String receivableAmountStr = calculateReceivableAmountStr(receivableFeeManagement.getReceivableFeeDetailList()); |
| | | receivableFeeManagement.setReceivableAmountStr(receivableAmountStr); |
| | | } |
| | | |
| | | receivableFeeManagement.setCreateBy(SecurityUtils.getUsername()); |
| | | // 保存主表信息 |
| | | int result = receivableFeeManagementMapper.insertReceivableFeeManagement(receivableFeeManagement); |
| | | |
| | |
| | | // 设置每个明细的应收费用管理ID |
| | | receivableFeeManagement.getReceivableFeeDetailList().forEach(detail -> { |
| | | detail.setReceivableFeeId(receivableFeeId); |
| | | detail.setUpdateTime(DateUtils.getNowDate()); // 设置更新时间 |
| | | detail.setCreateTime(DateUtils.getNowDate()); // 设置更新时间 |
| | | }); |
| | | |
| | | // 调用批量插入方法 |
| | |
| | | billManagement.setCreateTime(DateUtils.getNowDate()); |
| | | billManagement.setBillName(billCreateVo.getBillName()); |
| | | billManagement.setCustomerName(billCreateVo.getCustomerName()); |
| | | billManagement.setCreateBy(SecurityUtils.getUsername()); |
| | | billManagement.setIsInternalSettlement(billCreateVo.getIsInternalSettlement()); |
| | | billManagement.setInternalSettlementUnit(billCreateVo.getInternalSettlementUnit()); |
| | | // 3. 根据账单类型设置币种和总金额 |
| | |
| | | } else { |
| | | throw new IllegalArgumentException("无效的账单类型:" + billType); |
| | | } |
| | | billManagement.setPendingAmount(billManagement.getTotalAmount()); |
| | | String noByKey = systemDataNoService.getNoByKey(SystemDataNoEnum.YSZD); |
| | | billManagement.setSystemNo(noByKey); |
| | | // 4. 保存主账单记录 |
| | |
| | | Map<String, BigDecimal> currencyAmountMap = new HashMap<>(); |
| | | for (ReceivableFeeDetail detail : detailList) { |
| | | String currency = detail.getCurrency(); |
| | | BigDecimal billingAmount = detail.getBillingAmount(); |
| | | BigDecimal billingAmount = detail.getActualAmount(); |
| | | |
| | | if (currency != null && billingAmount != null) { |
| | | currencyAmountMap.merge(currency, billingAmount, BigDecimal::add); |
| | |
| | | |
| | | return sb.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 导入应收费用管理数据 |
| | | * |
| | | * @param receivableFeeList 应收费用管理数据列表 |
| | | * @param updateSupport 是否更新支持,如果已存在,则进行更新数据 |
| | | * @param operName 操作用户 |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public String importReceivableFee(List<ReceivableFeeManagement> receivableFeeList, Boolean updateSupport, String operName) { |
| | | if (receivableFeeList == null || receivableFeeList.isEmpty()) { |
| | | return "导入用户数据不能为空!"; |
| | | } |
| | | int successNum = 0; |
| | | int failureNum = 0; |
| | | StringBuilder successMsg = new StringBuilder(); |
| | | StringBuilder failureMsg = new StringBuilder(); |
| | | |
| | | for (ReceivableFeeManagement receivableFee : receivableFeeList) { |
| | | try { |
| | | // 验证系统编号是否唯一 |
| | | ReceivableFeeManagement checkFee = new ReceivableFeeManagement(); |
| | | checkFee.setSystemNo(receivableFee.getSystemNo()); |
| | | List<ReceivableFeeManagement> existingFees = selectReceivableFeeManagementList(checkFee); |
| | | |
| | | if (!existingFees.isEmpty()) { |
| | | // 存在重复记录 |
| | | if (updateSupport) { |
| | | // 更新支持,进行更新操作 |
| | | ReceivableFeeManagement existingFee = existingFees.get(0); |
| | | receivableFee.setId(existingFee.getId()); |
| | | receivableFee.setUpdateTime(DateUtils.getNowDate()); |
| | | receivableFee.setUpdateBy(operName); |
| | | updateReceivableFeeManagement(receivableFee); |
| | | successNum++; |
| | | successMsg.append("<br/>" + successNum + ". 系统编号 " + receivableFee.getSystemNo() + " 更新成功"); |
| | | } else { |
| | | failureNum++; |
| | | failureMsg.append("<br/>" + failureNum + ". 系统编号 " + receivableFee.getSystemNo() + " 已存在"); |
| | | } |
| | | } else { |
| | | // 新增记录 |
| | | receivableFee.setCreateTime(DateUtils.getNowDate()); |
| | | receivableFee.setCreateBy(operName); |
| | | insertReceivableFeeManagement(receivableFee); |
| | | successNum++; |
| | | successMsg.append("<br/>" + successNum + ". 系统编号 " + receivableFee.getSystemNo() + " 导入成功"); |
| | | } |
| | | } catch (Exception e) { |
| | | failureNum++; |
| | | String msg = "<br/>" + failureNum + ". 系统编号 " + receivableFee.getSystemNo() + " 导入失败:"; |
| | | failureMsg.append(msg + e.getMessage()); |
| | | logger.error(msg, e); |
| | | } |
| | | } |
| | | |
| | | if (failureNum > 0) { |
| | | failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); |
| | | throw new ServiceException(failureMsg.toString()); |
| | | } else { |
| | | successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); |
| | | } |
| | | return successMsg.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 下载导入模板 |
| | | * |
| | | * @param exportKey 导出功能的唯一标识 |
| | | */ |
| | | @DataSource(DataSourceType.SLAVE) |
| | | @Async |
| | | @Override |
| | | public void importTemplate(String exportKey) { |
| | | super.export(ReceivableFeeManagement.class, exportKey, "receivableFeeManagementTemplate", (pageNum) -> { |
| | | // 返回空列表,只导出模板结构 |
| | | return new ArrayList<ReceivableFeeManagement>(); |
| | | }); |
| | | } |
| | | } |