Commit 9f77c477 by jianan

出账检核-分期出账4

parent 6219f90f
......@@ -431,6 +431,36 @@ public class ApiFortuneController {
}
/**
* 修改设置出账年月(实)),设置完成后,更新到应付款管理明细中
*
* @param editActualPayoutDateRequest
* @return
*/
@PostMapping("/edit_actual_payout_date")
@Operation(summary = "修改设置出账年月(实),设置完成后,更新到应付款管理明细中")
public Result<Boolean> editActualPayoutDate(@RequestBody EditActualPayoutDateRequest editActualPayoutDateRequest) {
if (editActualPayoutDateRequest == null || StringUtils.isBlank(editActualPayoutDateRequest.getFortuneBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
return Result.success(fortuneService.editActualPayoutDate(editActualPayoutDateRequest));
}
/**
* 修改结算汇率,设置完成后,更新到应付款管理明细中
*
* @param editExchangeRateRequest
* @return
*/
@PostMapping("/edit_exchange_rate")
@Operation(summary = "修改结算汇率,设置完成后,更新到应付款管理明细中")
public Result<Boolean> editExchangeRate(@RequestBody EditExchangeRateRequest editExchangeRateRequest) {
if (editExchangeRateRequest == null || StringUtils.isBlank(editExchangeRateRequest.getFortuneBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
return Result.success(fortuneService.editExchangeRate(editExchangeRateRequest));
}
/**
* 修改出账状态
*
* @param fortuneStatusUpdateRequest
......
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class EditActualPayoutDateRequest {
@Schema(description = "出账业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String fortuneBizId;
@Schema(description = "实际出账年月(实)", requiredMode = Schema.RequiredMode.REQUIRED)
private String actualPayoutDate;
}
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class EditExchangeRateRequest {
@Schema(description = "fortuneBizId", requiredMode = Schema.RequiredMode.REQUIRED)
private String fortuneBizId;
@Schema(description = "结算汇率", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal exchangeRate;
}
......@@ -43,6 +43,12 @@ public class ExpectedFortune implements Serializable {
private String fortuneBizType;
/**
* 是否拆分出来的出账 1-是 0-否 2-拆分的原纪录
*/
@TableField("is_part")
private Integer isPart;
/**
* 应付款编号
*/
@TableField("payable_no")
......
......@@ -42,4 +42,8 @@ public interface FortuneService extends IService<Fortune> {
Boolean addFortuneBatch(List<FortuneAddRequest> fortuneAddRequestList);
Boolean splitFortune(FortuneSplitRequest fortuneSplitRequest);
Boolean editActualPayoutDate(EditActualPayoutDateRequest editActualPayoutDateRequest);
Boolean editExchangeRate(EditExchangeRateRequest editExchangeRateRequest);
}
......@@ -798,8 +798,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
List<FortuneSplitDto> splitList = fortuneSplitRequest.getFortuneSplitDtoList();
// 3. 金额验证
BigDecimal totalSplitHkdAmount = splitList.stream()
.map(FortuneSplitDto::getHkdAmount)
BigDecimal totalSplitOriginalAmount = splitList.stream()
.map(FortuneSplitDto::getOriginalAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal totalSplitRatio = splitList.stream()
......@@ -808,10 +808,10 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal tolerance = new BigDecimal("0.01");
BigDecimal hkdDifference = originalFortune.getHkdAmount().subtract(totalSplitHkdAmount).abs();
if (hkdDifference.compareTo(tolerance) > 0) {
BigDecimal originalDifference = originalFortune.getAmount().subtract(totalSplitOriginalAmount).abs();
if (originalDifference.compareTo(tolerance) > 0) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(),
String.format("分期港币金额总和(%s)与原记录港币金额(%s)不匹配", totalSplitHkdAmount, originalFortune.getHkdAmount()));
String.format("分期原始金额总和(%s)与原记录原始金额(%s)不匹配", totalSplitOriginalAmount, originalFortune.getAmount()));
}
if (totalSplitRatio.compareTo(BigDecimal.ZERO) > 0) {
......@@ -922,9 +922,17 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
newFortuneList.add(newFortune);
}
// 5. 处理原始记录
this.removeById(originalFortune.getId());
expectedFortuneService.removeById(originalExpectedFortune.getId());
// 5.1 设置原始 fortune记录 is_part 为 2,表示该记录已被分期
this.lambdaUpdate()
.set(Fortune::getIsPart, 2)
.eq(Fortune::getId, originalFortune.getId())
.update();
// 5.2 设置原始 expected fortune记录 is_part 为 2,表示该记录已被分期
expectedFortuneService.lambdaUpdate()
.set(ExpectedFortune::getIsPart, 2)
.eq(ExpectedFortune::getId, originalExpectedFortune.getId())
.update();
// 6. 批量保存新记录
boolean expectedSaveSuccess = expectedFortuneService.saveBatch(newExpectedFortuneList);
......@@ -941,6 +949,16 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return true;
}
@Override
public Boolean editActualPayoutDate(EditActualPayoutDateRequest editActualPayoutDateRequest) {
return null;
}
@Override
public Boolean editExchangeRate(EditExchangeRateRequest editExchangeRateRequest) {
return null;
}
private void validSplitFortune(FortuneSplitRequest fortuneSplitRequest) {
if (fortuneSplitRequest == null) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "分期出账请求不能为空");
......
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