Commit d2528918 by zhangxingmin

push

parent 57dab836
......@@ -161,26 +161,28 @@ public class ApiSalarySplitServiceImpl implements ApiSalarySplitService {
*/
@Override
public Result<ApiQueryRemainingResponse> queryRemaining(ApiQueryRemainingRequest request) {
//查询出账记录是否存在
// 1. 校验出账记录是否存在
FortuneAccount fortuneAccount = fortuneAccountService.queryOne(request.getFortuneAccountBizId());
if (fortuneAccount == null) {
throw new BusinessException("出账记录不存在");
}
BigDecimal beSplitAmount = BigDecimal.ZERO;
// 查询所有拆分记录,计算已拆分总金额
List<SalarySplit> salarySplits = iSalarySplitService.lambdaQuery()
.eq(SalarySplit::getFortuneAccountBizId, request.getFortuneAccountBizId())
.list();
BigDecimal splitTotal = salarySplits.stream()
.map(SalarySplit::getFromAmount)
// 2. 计算本次拟拆分金额总和(使用请求中的 fromAmountList)
BigDecimal splitTotal = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(request.getFromAmountList())) {
splitTotal = request.getFromAmountList().stream()
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
// 3. 计算剩余可拆金额(账户总额 - 本次拟拆分总额)
BigDecimal fortuneAmount = fortuneAccount.getHkdAmount() != null ? fortuneAccount.getHkdAmount() : BigDecimal.ZERO;
beSplitAmount = fortuneAmount.subtract(splitTotal);
BigDecimal beSplitAmount = fortuneAmount.subtract(splitTotal);
if (beSplitAmount.compareTo(BigDecimal.ZERO) < 0) {
beSplitAmount = BigDecimal.ZERO; // 防止负数
}
// 4. 封装响应
ApiQueryRemainingResponse response = new ApiQueryRemainingResponse();
response.setCurrency(fortuneAccount.getCurrency());
response.setFromAmount(beSplitAmount);
......
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