| | |
| | | return Result.error("你的保险额度已领取完!"); |
| | | } |
| | | |
| | | // 计算剩余天数 |
| | | long remainingDays = ChronoUnit.DAYS.between(now, medicalInsuranceAccount.getExpiryDate()) + 1; |
| | | |
| | | // 计算每日金额 |
| | | BigDecimal dailyAmount = calculateDailyAmount( |
| | | medicalInsuranceAccount.getTotalQuota(), (int) remainingDays); |
| | | |
| | | // 如果账户余额不足,则领取剩余全部金额 |
| | | if (medicalInsuranceAccount.getAmountClaimed().compareTo(dailyAmount) < 0) { |
| | | dailyAmount = medicalInsuranceAccount.getAmountClaimed(); |
| | | } |
| | | |
| | | // 更新待领金额 |
| | | medicalInsuranceAccount.setAmountClaimed(medicalInsuranceAccount.getAmountClaimed().subtract(dailyAmount)); |
| | | // // 计算剩余天数 |
| | | // long remainingDays = ChronoUnit.DAYS.between(now, medicalInsuranceAccount.getExpiryDate()) + 1; |
| | | // |
| | | // // 计算每日金额 |
| | | // BigDecimal dailyAmount = calculateDailyAmount( |
| | | // medicalInsuranceAccount.getTotalQuota(), (int) remainingDays); |
| | | // |
| | | // // 如果账户余额不足,则领取剩余全部金额 |
| | | // if (medicalInsuranceAccount.getAmountClaimed().compareTo(dailyAmount) < 0) { |
| | | // dailyAmount = medicalInsuranceAccount.getAmountClaimed(); |
| | | // } |
| | | // |
| | | // // 更新待领金额 |
| | | // medicalInsuranceAccount.setAmountClaimed(medicalInsuranceAccount.getAmountClaimed().subtract(dailyAmount)); |
| | | |
| | | // 更新已领取金额 |
| | | BigDecimal currentAmountReceived = medicalInsuranceAccount.getAlreadyReceived() != null ? |
| | | medicalInsuranceAccount.getAlreadyReceived(): BigDecimal.ZERO; |
| | | medicalInsuranceAccount.setAlreadyReceived(currentAmountReceived.add(dailyAmount)); |
| | | medicalInsuranceAccount.setAlreadyReceived(currentAmountReceived.add(medicalInsuranceAccount.getAmountClaimed())); |
| | | |
| | | medicalInsuranceAccountMapper.updateById(medicalInsuranceAccount); |
| | | |
| | |
| | | claim.setAccountId(medicalInsuranceAccount.getId()); |
| | | claim.setUserId(userAccount.getId()); |
| | | claim.setClaimDate(today); |
| | | claim.setClaimAmount(dailyAmount); |
| | | claim.setClaimAmount(medicalInsuranceAccount.getAmountClaimed()); |
| | | claim.setCreatedAt(new Date()); |
| | | medicalInsuranceDailyClaimMapper.insert(claim); |
| | | return Result.success("领取成功"); |