Commit fe1d4c77 by jianan

出账检核-设置出账金额问题2

parent d721e2d9
...@@ -208,22 +208,36 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -208,22 +208,36 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
if (currentPaymentHkdAmount != null && currentPaymentHkdAmount.compareTo(BigDecimal.ZERO) != 0) { if (currentPaymentHkdAmount != null && currentPaymentHkdAmount.compareTo(BigDecimal.ZERO) != 0) {
splitFortune(fortune, currentPaymentHkdAmount, expectedFortune, loginUserId, fortuneUpdateRequest); splitFortune(fortune, currentPaymentHkdAmount, expectedFortune, loginUserId, fortuneUpdateRequest);
} else { } else {
// 如果未传入金额,仅更新预计出账状态为已出帐 // 如果未传入金额,全额发放,出账状态为已出帐
expectedFortuneService.lambdaUpdate() totalFortune(fortune, expectedFortune, loginUserId, fortuneUpdateRequest);
.set(ExpectedFortune::getStatus, fortuneUpdateRequest.getStatus()) }
.eq(ExpectedFortune::getId, expectedFortune.getId()) return true;
.update(); }
// 统一更新实际出账数据 private void totalFortune(Fortune fortune, ExpectedFortune expectedFortune, String loginUserId, FortuneUpdateRequest fortuneUpdateRequest) {
BeanUtils.copyProperties(fortuneUpdateRequest, fortune, "id", "fortuneBizId", "expectedFortuneBizId", "commissionBizId"); // 1. 更新fortune记录为全额发放状态
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
fortune.setCurrentPaymentRatio(BigDecimal.valueOf(100));
fortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
fortune.setUpdaterId(loginUserId);
fortune.setUpdateTime(new Date());
// 更新实际出账数据 // 更新实际出账日期
fortune.setUpdaterId(loginUserId); Date actualPayoutDate = new Date();
fortune.setUpdateTime(new Date()); fortune.setActualPayoutDate(actualPayoutDate);
this.updateById(fortune); this.updateById(fortune);
}
return true; // 2. 更新expected_fortune记录为已全额发放状态
// 统一使用港币金额
expectedFortune.setPaidAmount(expectedFortune.getHkdAmount());
expectedFortune.setUnpaidAmount(BigDecimal.ZERO);
expectedFortune.setPaidRatio(BigDecimal.valueOf(100));
expectedFortune.setUnpaidRatio(BigDecimal.ZERO);
expectedFortune.setStatus("6"); // 全额发放完成状态
expectedFortune.setActualPayoutDate(LocalDate.now());
expectedFortuneService.updateById(expectedFortune);
} }
private BigDecimal queryDefaultExchangeRate(String currency) { private BigDecimal queryDefaultExchangeRate(String currency) {
...@@ -290,25 +304,20 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -290,25 +304,20 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
} }
// 3. 同步 expected_fortune // 3. 同步 expected_fortune
ExpectedFortune ef = expectedFortuneService.lambdaQuery()
.eq(ExpectedFortune::getExpectedFortuneBizId, main.getExpectedFortuneBizId())
.one();
if (ef == null) return;
// 统一使用港币金额 // 统一使用港币金额
BigDecimal newPaid = ef.getPaidAmount() == null ? BigDecimal.ZERO : ef.getPaidAmount().add(currentPaymentHkdAmount); BigDecimal newPaid = expectedFortune.getPaidAmount() == null ? BigDecimal.ZERO : expectedFortune.getPaidAmount().add(currentPaymentHkdAmount);
BigDecimal newUnpaid = ef.getHkdAmount().subtract(newPaid); BigDecimal newUnpaid = expectedFortune.getHkdAmount().subtract(newPaid);
String newStatus = newUnpaid.compareTo(BigDecimal.ZERO) == 0 ? "6" : "3"; String newStatus = newUnpaid.compareTo(BigDecimal.ZERO) == 0 ? "6" : "3";
expectedFortuneService.lambdaUpdate() expectedFortuneService.lambdaUpdate()
.set(ExpectedFortune::getPaidAmount, newPaid) .set(ExpectedFortune::getPaidAmount, newPaid)
.set(ExpectedFortune::getUnpaidAmount, newUnpaid) .set(ExpectedFortune::getUnpaidAmount, newUnpaid)
.set(ExpectedFortune::getPaidRatio, .set(ExpectedFortune::getPaidRatio,
newPaid.divide(ef.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))) newPaid.divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
.set(ExpectedFortune::getUnpaidRatio, .set(ExpectedFortune::getUnpaidRatio,
newUnpaid.divide(ef.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))) newUnpaid.divide(expectedFortune.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
.set(ExpectedFortune::getStatus, newStatus) .set(ExpectedFortune::getStatus, newStatus)
.eq(ExpectedFortune::getId, ef.getId()) .eq(ExpectedFortune::getId, expectedFortune.getId())
.update(); .update();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment