Commit d5fa48ea by jianan

出账检核-分期出账5

parent de9219df
...@@ -39,6 +39,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -39,6 +39,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -469,45 +470,6 @@ public class ApiCommissionController { ...@@ -469,45 +470,6 @@ public class ApiCommissionController {
return Result.success(commissionService.getCommissionStatistics(commissionStatisticsRequest.getCommissionIds())); return Result.success(commissionService.getCommissionStatistics(commissionStatisticsRequest.getCommissionIds()));
} }
/**
* 根据 commissionBizId 获取保单来佣(封装类)
*
* @param commissionBizId
* @return
*/
// @GetMapping("/get/vo")
// @Operation(summary = "根据 policyBizId 获取保单来佣详情")
// public Result<PolicyFollowVO> getPolicyFollowByPolicyBizId(@RequestParam("commissionBizId") String commissionBizId, HttpServletRequest request) {
// if (commissionBizId == null) {
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// }
// // 查询数据库
// PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId);
// if (policyFollow == null) {
// return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
// }
//
// // 获取封装类
// return Result.success(policyFollowService.getPolicyFollowVO(policyFollow));
// }
/**
* 分页获取保单来佣列表(仅管理员可用)
*
* @param fnaQueryRequest
* @return
*/
// @PostMapping("/list/page")
// public Result<Page<Customer>> listFnaByPage(@RequestBody FnaQueryRequest fnaQueryRequest) {
// long current = fnaQueryRequest.getPageNo();
// long size = fnaQueryRequest.getPageSize();
// // 查询数据库
// Page<Customer> fnaPage = policyFollowService.page(new Page<>(current, size),
// policyFollowService.getQueryWrapper(fnaQueryRequest));
// return Result.success(fnaPage);
// }
/** /**
* 来佣检核页面-分页获取保单来佣列表(VO) * 来佣检核页面-分页获取保单来佣列表(VO)
* *
...@@ -567,4 +529,27 @@ public class ApiCommissionController { ...@@ -567,4 +529,27 @@ public class ApiCommissionController {
return Result.success(commissionService.getCommissionVOPage(commissionPage)); return Result.success(commissionService.getCommissionVOPage(commissionPage));
} }
/**
* 查询入账结算汇率
*
* @param queryCommissionExchangeRateRequest
* @return
*/
@PostMapping("/commission_exchange_rate")
@Operation(summary = "查询入账结算汇率")
public Result<BigDecimal> commissionExchangeRate(@RequestBody QueryCommissionExchangeRateRequest queryCommissionExchangeRateRequest) {
if (queryCommissionExchangeRateRequest == null || StringUtils.isBlank(queryCommissionExchangeRateRequest.getPolicyNo())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "policyNo 不能为空");
}
if (queryCommissionExchangeRateRequest.getCommissionPeriod() == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "commissionPeriod 不能为空");
}
return Result.success(
commissionService.queryCommissionExchangeRate(
queryCommissionExchangeRateRequest.getPolicyNo(),
queryCommissionExchangeRateRequest.getCommissionPeriod()
)
);
}
} }
...@@ -37,6 +37,7 @@ import javax.annotation.Resource; ...@@ -37,6 +37,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -436,11 +437,14 @@ public class ApiFortuneController { ...@@ -436,11 +437,14 @@ public class ApiFortuneController {
* @param editActualPayoutDateRequest * @param editActualPayoutDateRequest
* @return * @return
*/ */
@PostMapping("/edit_actual_payout_date") @PostMapping("/edit/actual_payout_date")
@Operation(summary = "修改设置出账年月(实),设置完成后,更新到应付款管理明细中") @Operation(summary = "修改设置出账年月(实),设置完成后,更新到应付款管理明细中")
public Result<Boolean> editActualPayoutDate(@RequestBody EditActualPayoutDateRequest editActualPayoutDateRequest) { public Result<Boolean> editActualPayoutDate(@RequestBody EditActualPayoutDateRequest editActualPayoutDateRequest) {
if (editActualPayoutDateRequest == null || StringUtils.isBlank(editActualPayoutDateRequest.getFortuneBizId())) { if (editActualPayoutDateRequest == null || StringUtils.isBlank(editActualPayoutDateRequest.getFortuneBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "fortuneBizId 不能为空");
}
if (StringUtils.isBlank(editActualPayoutDateRequest.getActualPayoutDate())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "actualPayoutDate 不能为空");
} }
return Result.success(fortuneService.editActualPayoutDate(editActualPayoutDateRequest)); return Result.success(fortuneService.editActualPayoutDate(editActualPayoutDateRequest));
} }
...@@ -451,11 +455,14 @@ public class ApiFortuneController { ...@@ -451,11 +455,14 @@ public class ApiFortuneController {
* @param editExchangeRateRequest * @param editExchangeRateRequest
* @return * @return
*/ */
@PostMapping("/edit_exchange_rate") @PostMapping("/edit/exchange_rate")
@Operation(summary = "修改结算汇率,设置完成后,更新到应付款管理明细中") @Operation(summary = "修改结算汇率,设置完成后,更新到应付款管理明细中")
public Result<Boolean> editExchangeRate(@RequestBody EditExchangeRateRequest editExchangeRateRequest) { public Result<Boolean> editExchangeRate(@RequestBody EditExchangeRateRequest editExchangeRateRequest) {
if (editExchangeRateRequest == null || StringUtils.isBlank(editExchangeRateRequest.getFortuneBizId())) { if (editExchangeRateRequest == null || StringUtils.isBlank(editExchangeRateRequest.getFortuneBizId())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "fortuneBizId 不能为空");
}
if (editExchangeRateRequest.getExchangeRate() == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "exchangeRate 不能为空");
} }
return Result.success(fortuneService.editExchangeRate(editExchangeRateRequest)); return Result.success(fortuneService.editExchangeRate(editExchangeRateRequest));
} }
...@@ -475,45 +482,6 @@ public class ApiFortuneController { ...@@ -475,45 +482,6 @@ public class ApiFortuneController {
return Result.success(fortuneService.updateFortuneStatus(fortuneStatusUpdateRequest)); return Result.success(fortuneService.updateFortuneStatus(fortuneStatusUpdateRequest));
} }
/**
* 根据 fortuneBizId 获取保单发佣(封装类)
*
* @param fortuneBizId
* @return
*/
// @GetMapping("/get/vo")
// @Operation(summary = "根据 policyBizId 获取保单发佣详情")
// public Result<PolicyFollowVO> getPolicyFollowByPolicyBizId(@RequestParam("fortuneBizId") String fortuneBizId, HttpServletRequest request) {
// if (fortuneBizId == null) {
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// }
// // 查询数据库
// PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId);
// if (policyFollow == null) {
// return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
// }
//
// // 获取封装类
// return Result.success(policyFollowService.getPolicyFollowVO(policyFollow));
// }
/**
* 分页获取保单发佣列表(仅管理员可用)
*
* @param fnaQueryRequest
* @return
*/
// @PostMapping("/list/page")
// public Result<Page<Customer>> listFnaByPage(@RequestBody FnaQueryRequest fnaQueryRequest) {
// long current = fnaQueryRequest.getPageNo();
// long size = fnaQueryRequest.getPageSize();
// // 查询数据库
// Page<Customer> fnaPage = policyFollowService.page(new Page<>(current, size),
// policyFollowService.getQueryWrapper(fnaQueryRequest));
// return Result.success(fnaPage);
// }
/** /**
* 出账检核页面-分页获取保单发佣列表(VO) * 出账检核页面-分页获取保单发佣列表(VO)
* *
......
...@@ -972,28 +972,6 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -972,28 +972,6 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
return true; return true;
} }
/**
* 根据保单号和期数查询入账记录的结算汇率
*
* @param policyNo 保单号
* @param period 佣金期数
* @return 结算汇率
*/
private BigDecimal queryCommissionExchangeRate(String policyNo, Integer period) {
// 查询当前期数入账记录的结算汇率
Commission commissionRecord = commissionService.getOne(
new QueryWrapper<Commission>()
.eq("policy_no", policyNo)
.eq("commission_period", period)
.orderByDesc("commission_date")
.last("LIMIT 1")
);
if (ObjectUtils.isEmpty(commissionRecord)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单号为" + policyNo + "的佣金期数为" + period + "的入账记录不存在");
}
return commissionRecord.getExchangeRate();
}
private String queryByDict(String fortuneType) { private String queryByDict(String fortuneType) {
//查询redis缓存的字典列表信息 //查询redis缓存的字典列表信息
List<GetDictItemListByDictTypeResponse> dictTypeResponses = redisUtil.getCacheObject(RedisConstants.DICT_LIST); List<GetDictItemListByDictTypeResponse> dictTypeResponses = redisUtil.getCacheObject(RedisConstants.DICT_LIST);
......
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class QueryCommissionExchangeRateRequest {
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyNo;
@Schema(description = "佣金期数", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer commissionPeriod;
}
...@@ -11,6 +11,7 @@ import com.yd.csf.service.model.CommissionExpected; ...@@ -11,6 +11,7 @@ import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.vo.CommissionStatisticsVO; import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -59,4 +60,13 @@ public interface CommissionService extends IService<Commission> { ...@@ -59,4 +60,13 @@ public interface CommissionService extends IService<Commission> {
boolean deleteByIdPhysical(Long id); boolean deleteByIdPhysical(Long id);
Boolean deleteCommission(Commission oldCommission); Boolean deleteCommission(Commission oldCommission);
/**
* 根据保单号和期数查询入账记录的结算汇率
*
* @param policyNo 保单号
* @param commissionPeriod 佣金期数
* @return 结算汇率
*/
BigDecimal queryCommissionExchangeRate(String policyNo, Integer commissionPeriod);
} }
package com.yd.csf.service.service; package com.yd.csf.service.service;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
...@@ -46,4 +47,6 @@ public interface FortuneService extends IService<Fortune> { ...@@ -46,4 +47,6 @@ public interface FortuneService extends IService<Fortune> {
Boolean editActualPayoutDate(EditActualPayoutDateRequest editActualPayoutDateRequest); Boolean editActualPayoutDate(EditActualPayoutDateRequest editActualPayoutDateRequest);
Boolean editExchangeRate(EditExchangeRateRequest editExchangeRateRequest); Boolean editExchangeRate(EditExchangeRateRequest editExchangeRateRequest);
BigDecimal commissionExchangeRate(QueryCommissionExchangeRateRequest queryCommissionExchangeRateRequest);
} }
...@@ -235,7 +235,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -235,7 +235,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
QueryWrapper<Policy> queryWrapper = new QueryWrapper<Policy>(); QueryWrapper<Policy> queryWrapper = new QueryWrapper<Policy>();
queryWrapper.in("policy_no", policyNoSet); queryWrapper.in("policy_no", policyNoSet);
queryWrapper.select( queryWrapper.select(
"policy_no", "payment_premium","currency", "policy_no", "payment_premium", "currency",
"product_launch_biz_id", "product_name", "product_launch_biz_id", "product_name",
"insurance_company_biz_id", "insurance_company", "insurance_company_biz_id", "insurance_company",
"reconciliation_company", "reconciliation_company_code", "reconciliation_company_biz_id"); "reconciliation_company", "reconciliation_company_code", "reconciliation_company_biz_id");
...@@ -731,6 +731,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -731,6 +731,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
/** /**
* 保单币种对预计来佣的结算币种的默认汇率 * 保单币种对预计来佣的结算币种的默认汇率
*
* @param policyCurrency 保单币种 * @param policyCurrency 保单币种
* @param currency 预计来佣的结算币种 * @param currency 预计来佣的结算币种
* @return 汇率 * @return 汇率
...@@ -1114,6 +1115,22 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -1114,6 +1115,22 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return true; return true;
} }
@Override
public BigDecimal queryCommissionExchangeRate(String policyNo, Integer commissionPeriod) {
// 查询当前期数入账记录的结算汇率
Commission commissionRecord = this.getOne(
new QueryWrapper<Commission>()
.eq("policy_no", policyNo)
.eq("commission_period", commissionPeriod)
.orderByDesc("commission_date")
.last("LIMIT 1")
);
if (ObjectUtils.isEmpty(commissionRecord)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单号为" + policyNo + "的佣金期数为" + commissionPeriod + "的入账记录不存在");
}
return commissionRecord.getExchangeRate();
}
/** /**
* 查询列表 * 查询列表
* *
......
...@@ -11,7 +11,6 @@ import com.yd.csf.service.dto.UserGradeDto; ...@@ -11,7 +11,6 @@ import com.yd.csf.service.dto.UserGradeDto;
import com.yd.csf.service.enums.CurrencyEnum; import com.yd.csf.service.enums.CurrencyEnum;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.dao.ExpectedFortuneMapper; import com.yd.csf.service.dao.ExpectedFortuneMapper;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.model.Policy; import com.yd.csf.service.model.Policy;
import com.yd.csf.service.model.PolicyFollow; import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
...@@ -21,7 +20,6 @@ import com.yd.csf.service.vo.PayableReportVO; ...@@ -21,7 +20,6 @@ import com.yd.csf.service.vo.PayableReportVO;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
......
...@@ -857,12 +857,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -857,12 +857,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
newExpectedFortune.setStatus("0"); newExpectedFortune.setStatus("0");
String[] yearMonth = splitDto.getPayoutYearMonth().split("-"); newExpectedFortune.setPayoutDate(toPayoutDate(splitDto.getPayoutYearMonth()));
newExpectedFortune.setPayoutDate(LocalDate.of(
Integer.parseInt(yearMonth[0]),
Integer.parseInt(yearMonth[1]),
1
));
String expectedRemark = StringUtils.isBlank(splitDto.getRemark()) ? "" : splitDto.getRemark(); String expectedRemark = StringUtils.isBlank(splitDto.getRemark()) ? "" : splitDto.getRemark();
if (StringUtils.isNotBlank(originalExpectedFortune.getRemark())) { if (StringUtils.isNotBlank(originalExpectedFortune.getRemark())) {
...@@ -949,9 +944,44 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -949,9 +944,44 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return true; return true;
} }
private static LocalDate toPayoutDate(String payoutYearMonth) {
String[] yearMonth = payoutYearMonth.split("-");
return LocalDate.of(
Integer.parseInt(yearMonth[0]),
Integer.parseInt(yearMonth[1]),
1
);
}
@Override @Override
public Boolean editActualPayoutDate(EditActualPayoutDateRequest editActualPayoutDateRequest) { public Boolean editActualPayoutDate(EditActualPayoutDateRequest editActualPayoutDateRequest) {
return null; String fortuneBizId = editActualPayoutDateRequest.getFortuneBizId();
Fortune fortune = this.getByFortuneBizId(fortuneBizId);
if (fortune == null) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "出账记录不存在");
}
ExpectedFortune originalExpectedFortune = expectedFortuneService.getByBizId(fortune.getExpectedFortuneBizId());
if (originalExpectedFortune == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "对应的预计出账记录不存在");
}
// 计算实际出账日期
LocalDate actualPayoutDate = toPayoutDate(editActualPayoutDateRequest.getActualPayoutDate());
// 更新实际出账日期
this.lambdaUpdate()
.set(Fortune::getActualPayoutDate, actualPayoutDate)
.eq(Fortune::getId, fortune.getId())
.update();
expectedFortuneService.lambdaUpdate()
.set(ExpectedFortune::getActualPayoutDate, actualPayoutDate)
.eq(ExpectedFortune::getId, originalExpectedFortune.getId())
.update();
return true;
} }
@Override @Override
...@@ -959,6 +989,11 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -959,6 +989,11 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return null; return null;
} }
@Override
public BigDecimal commissionExchangeRate(QueryCommissionExchangeRateRequest queryCommissionExchangeRateRequest) {
return null;
}
private void validSplitFortune(FortuneSplitRequest fortuneSplitRequest) { private void validSplitFortune(FortuneSplitRequest fortuneSplitRequest) {
if (fortuneSplitRequest == null) { if (fortuneSplitRequest == null) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "分期出账请求不能为空"); 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