Commit fe1d4c77 by jianan

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

parent d721e2d9
......@@ -208,22 +208,36 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
if (currentPaymentHkdAmount != null && currentPaymentHkdAmount.compareTo(BigDecimal.ZERO) != 0) {
splitFortune(fortune, currentPaymentHkdAmount, expectedFortune, loginUserId, fortuneUpdateRequest);
} else {
// 如果未传入金额,仅更新预计出账状态为已出帐
expectedFortuneService.lambdaUpdate()
.set(ExpectedFortune::getStatus, fortuneUpdateRequest.getStatus())
.eq(ExpectedFortune::getId, expectedFortune.getId())
.update();
// 统一更新实际出账数据
BeanUtils.copyProperties(fortuneUpdateRequest, fortune, "id", "fortuneBizId", "expectedFortuneBizId", "commissionBizId");
// 如果未传入金额,全额发放,出账状态为已出帐
totalFortune(fortune, expectedFortune, loginUserId, fortuneUpdateRequest);
}
return true;
}
// 更新实际出账数据
private void totalFortune(Fortune fortune, ExpectedFortune expectedFortune, String loginUserId, FortuneUpdateRequest fortuneUpdateRequest) {
// 1. 更新fortune记录为全额发放状态
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
fortune.setCurrentPaymentRatio(BigDecimal.valueOf(100));
fortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
fortune.setUpdaterId(loginUserId);
fortune.setUpdateTime(new Date());
// 更新实际出账日期
Date actualPayoutDate = new Date();
fortune.setActualPayoutDate(actualPayoutDate);
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) {
......@@ -290,25 +304,20 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, 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 newUnpaid = ef.getHkdAmount().subtract(newPaid);
BigDecimal newPaid = expectedFortune.getPaidAmount() == null ? BigDecimal.ZERO : expectedFortune.getPaidAmount().add(currentPaymentHkdAmount);
BigDecimal newUnpaid = expectedFortune.getHkdAmount().subtract(newPaid);
String newStatus = newUnpaid.compareTo(BigDecimal.ZERO) == 0 ? "6" : "3";
expectedFortuneService.lambdaUpdate()
.set(ExpectedFortune::getPaidAmount, newPaid)
.set(ExpectedFortune::getUnpaidAmount, newUnpaid)
.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,
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)
.eq(ExpectedFortune::getId, ef.getId())
.eq(ExpectedFortune::getId, expectedFortune.getId())
.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