Commit 4cb474bc by jianan

出账检核-增加币种18

parent 36af8c38
...@@ -983,7 +983,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -983,7 +983,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
try { try {
// 2. 构建查询条件(不含 ORDER BY,因为 UNION ALL 在 XML 中有单独的 ORDER BY) // 2. 构建查询条件
QueryWrapper<ExpectedFortune> queryWrapper = this.getQueryWrapper(request); QueryWrapper<ExpectedFortune> queryWrapper = this.getQueryWrapper(request);
// 移除 QueryWrapper 中的排序,避免在 UNION ALL 的子查询中出现 ORDER BY // 移除 QueryWrapper 中的排序,避免在 UNION ALL 的子查询中出现 ORDER BY
......
...@@ -199,9 +199,15 @@ public class CommissionAsyncService { ...@@ -199,9 +199,15 @@ public class CommissionAsyncService {
paidAmount = paidAmount.add(item.getHkdAmount()); paidAmount = paidAmount.add(item.getHkdAmount());
} }
// 更新预计来佣已入账金额、已入账比例 // 更新预计来佣已入账金额、已入账比例、达成率缺口
commissionExpected.setPaidAmount(paidAmount); commissionExpected.setPaidAmount(paidAmount);
commissionExpected.setPaidRatio(paidRatio); commissionExpected.setPaidRatio(paidRatio);
commissionExpected.setPendingRatio(
BigDecimal.ONE
.subtract(paidRatio.divide(commissionExpected.getCommissionRatio(), 4, RoundingMode.HALF_UP))
.multiply(BigDecimal.valueOf(100))
);
// endregion 计算预计来佣属性 // endregion 计算预计来佣属性
...@@ -228,6 +234,7 @@ public class CommissionAsyncService { ...@@ -228,6 +234,7 @@ public class CommissionAsyncService {
.set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.COMPARED.getItemValue()) .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.COMPARED.getItemValue())
.set(CommissionExpected::getPaidAmount, paidAmount) .set(CommissionExpected::getPaidAmount, paidAmount)
.set(CommissionExpected::getPaidRatio, paidRatio) .set(CommissionExpected::getPaidRatio, paidRatio)
.set(CommissionExpected::getPendingRatio, commissionExpected.getPendingRatio())
.eq(CommissionExpected::getId, commissionExpected.getId()) .eq(CommissionExpected::getId, commissionExpected.getId())
.update(); .update();
// 更新已比对来佣记录 // 更新已比对来佣记录
...@@ -248,6 +255,7 @@ public class CommissionAsyncService { ...@@ -248,6 +255,7 @@ public class CommissionAsyncService {
.set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue()) .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
.set(CommissionExpected::getPaidAmount, paidAmount) .set(CommissionExpected::getPaidAmount, paidAmount)
.set(CommissionExpected::getPaidRatio, paidRatio) .set(CommissionExpected::getPaidRatio, paidRatio)
.set(CommissionExpected::getPendingRatio, commissionExpected.getPendingRatio())
.eq(CommissionExpected::getId, commissionExpected.getId()) .eq(CommissionExpected::getId, commissionExpected.getId())
.update(); .update();
// 更新已比对来佣记录 // 更新已比对来佣记录
...@@ -378,6 +386,11 @@ public class CommissionAsyncService { ...@@ -378,6 +386,11 @@ public class CommissionAsyncService {
// 更新预计来佣已入账金额、已入账比例 // 更新预计来佣已入账金额、已入账比例
commissionExpected.setPaidAmount(paidAmount); commissionExpected.setPaidAmount(paidAmount);
commissionExpected.setPaidRatio(paidRatio); commissionExpected.setPaidRatio(paidRatio);
commissionExpected.setPendingRatio(
BigDecimal.ONE
.subtract(paidRatio.divide(commissionExpected.getCommissionRatio(), 4, RoundingMode.HALF_UP))
.multiply(BigDecimal.valueOf(100))
);
// endregion 计算预计来佣属性 // endregion 计算预计来佣属性
...@@ -397,6 +410,7 @@ public class CommissionAsyncService { ...@@ -397,6 +410,7 @@ public class CommissionAsyncService {
.set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.COMPARED.getItemValue()) .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.COMPARED.getItemValue())
.set(CommissionExpected::getPaidAmount, paidAmount.setScale(4, RoundingMode.HALF_UP)) .set(CommissionExpected::getPaidAmount, paidAmount.setScale(4, RoundingMode.HALF_UP))
.set(CommissionExpected::getPaidRatio, paidRatio) .set(CommissionExpected::getPaidRatio, paidRatio)
.set(CommissionExpected::getPendingRatio, commissionExpected.getPendingRatio())
.eq(CommissionExpected::getId, commissionExpected.getId()) .eq(CommissionExpected::getId, commissionExpected.getId())
.update(); .update();
// 更新已比对来佣记录 // 更新已比对来佣记录
...@@ -416,6 +430,7 @@ public class CommissionAsyncService { ...@@ -416,6 +430,7 @@ public class CommissionAsyncService {
.set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue()) .set(CommissionExpected::getStatus, CommissionExpectedStatusEnum.PARTIAL.getItemValue())
.set(CommissionExpected::getPaidAmount, paidAmount) .set(CommissionExpected::getPaidAmount, paidAmount)
.set(CommissionExpected::getPaidRatio, paidRatio) .set(CommissionExpected::getPaidRatio, paidRatio)
.set(CommissionExpected::getPendingRatio, commissionExpected.getPendingRatio())
.eq(CommissionExpected::getId, commissionExpected.getId()) .eq(CommissionExpected::getId, commissionExpected.getId())
.update(); .update();
// 保存比对记录 // 保存比对记录
......
...@@ -42,6 +42,12 @@ public class FortuneQueryRequest extends PageDto implements Serializable { ...@@ -42,6 +42,12 @@ public class FortuneQueryRequest extends PageDto implements Serializable {
private List<String> commissionStatusList; private List<String> commissionStatusList;
/** /**
* 转介人(主)
*/
@Schema(description = "转介人(主)")
private String brokerName;
/**
* 保险公司业务 id 列表 * 保险公司业务 id 列表
*/ */
@Schema(description = "保险公司业务 id 列表") @Schema(description = "保险公司业务 id 列表")
......
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
...@@ -155,6 +156,11 @@ public class CommissionExpected implements Serializable { ...@@ -155,6 +156,11 @@ public class CommissionExpected implements Serializable {
private BigDecimal paidRatio; private BigDecimal paidRatio;
/** /**
* 达成率缺口= 1 - 已入账来佣比例/产品本期来佣率
*/
private BigDecimal pendingRatio;
/**
* 通用备注 * 通用备注
*/ */
private String remark; private String remark;
......
...@@ -167,18 +167,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -167,18 +167,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
} }
CommissionExpected commissionExpected = commissionExpectedMap.get(commission.getCommissionExpectedBizId()); CommissionExpected commissionExpected = commissionExpectedMap.get(commission.getCommissionExpectedBizId());
if (commissionExpected != null) { if (commissionExpected != null) {
// 填充应收账款编号、已入账比例、待入账比例 // 填充应收账款编号、预计入账状态
commissionVO.setReceivableNo(commissionExpected.getReceivableNo()); commissionVO.setReceivableNo(commissionExpected.getReceivableNo());
commissionVO.setStatusDesc(commissionExpected.getStatusDesc()); commissionVO.setStatusDesc(commissionExpected.getStatusDesc());
if (commissionExpected.getCommissionRatio() != null) {
BigDecimal paidRatio = commissionExpected.getPaidRatio() != null ? commissionExpected.getPaidRatio() : BigDecimal.ZERO;
commissionVO.setPaidRatio(paidRatio);
commissionVO.setPendingRatio(
BigDecimal.ONE
.subtract(paidRatio.divide(commissionExpected.getCommissionRatio(), 4, RoundingMode.HALF_UP))
.multiply(BigDecimal.valueOf(100))
);
}
commissionVO.setCommissionExpectedStatus(commissionExpected.getStatus()); commissionVO.setCommissionExpectedStatus(commissionExpected.getStatus());
} }
return commissionVO; return commissionVO;
......
...@@ -18,6 +18,7 @@ import com.yd.common.exception.BusinessException; ...@@ -18,6 +18,7 @@ import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator; import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.RedisUtil; import com.yd.common.utils.RedisUtil;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.FortuneStatusEnum; import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
...@@ -71,6 +72,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -71,6 +72,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Resource @Resource
private ApiExchangeRateFeignClient apiExchangeRateFeignClient; private ApiExchangeRateFeignClient apiExchangeRateFeignClient;
@Resource
private IAgentAccumulatedFycService iAgentAccumulatedFycService;
@Override @Override
public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) { public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) {
...@@ -90,6 +93,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -90,6 +93,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
List<String> productLaunchBizIdList = fortuneQueryRequest.getProductLaunchBizIdList(); List<String> productLaunchBizIdList = fortuneQueryRequest.getProductLaunchBizIdList();
LocalDate payoutDateStart = fortuneQueryRequest.getPayoutDateStart(); LocalDate payoutDateStart = fortuneQueryRequest.getPayoutDateStart();
LocalDate payoutDateEnd = fortuneQueryRequest.getPayoutDateEnd(); LocalDate payoutDateEnd = fortuneQueryRequest.getPayoutDateEnd();
String brokerName = fortuneQueryRequest.getBrokerName();
// 入账状态 // 入账状态
List<String> commissionStatusList = fortuneQueryRequest.getCommissionStatusList(); List<String> commissionStatusList = fortuneQueryRequest.getCommissionStatusList();
...@@ -101,6 +106,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -101,6 +106,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
queryWrapper.gt(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart); queryWrapper.gt(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart);
queryWrapper.lt(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd); queryWrapper.lt(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd);
queryWrapper.eq(StringUtils.isNotBlank(brokerName), "broker", brokerName);
// 入账状态, 关联查询 commission_expected 表 // 入账状态, 关联查询 commission_expected 表
if (CollUtil.isNotEmpty(commissionStatusList)) { if (CollUtil.isNotEmpty(commissionStatusList)) {
...@@ -122,12 +128,14 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -122,12 +128,14 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
List<FortuneVO> fortuneVOList = new ArrayList<>(); List<FortuneVO> fortuneVOList = new ArrayList<>();
Set<String> expectedFortuneBizIdSet = new HashSet<>(); Set<String> expectedFortuneBizIdSet = new HashSet<>();
Set<String> brokerBizIdSet = new HashSet<>();
Set<String> policyNoSet = new HashSet<>(); Set<String> policyNoSet = new HashSet<>();
for (Fortune fortune : fortuneList) { for (Fortune fortune : fortuneList) {
FortuneVO fortuneVO = FortuneVO.objToVo(fortune); FortuneVO fortuneVO = FortuneVO.objToVo(fortune);
fortuneVOList.add(fortuneVO); fortuneVOList.add(fortuneVO);
expectedFortuneBizIdSet.add(fortune.getExpectedFortuneBizId()); expectedFortuneBizIdSet.add(fortune.getExpectedFortuneBizId());
policyNoSet.add(fortune.getPolicyNo()); policyNoSet.add(fortune.getPolicyNo());
brokerBizIdSet.add(fortune.getBrokerBizId());
} }
Set<String> commissionExpectedBizIdSet = fortuneList.stream().map(Fortune::getCommissionExpectedBizId).collect(Collectors.toSet()); Set<String> commissionExpectedBizIdSet = fortuneList.stream().map(Fortune::getCommissionExpectedBizId).collect(Collectors.toSet());
...@@ -145,6 +153,9 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -145,6 +153,9 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
List<Policy> policyList = policyService.list(queryWrapper); List<Policy> policyList = policyService.list(queryWrapper);
Map<String, Policy> policyMap = policyList.stream().collect(Collectors.toMap(Policy::getPolicyNo, a -> a, (oldValue, newValue) -> newValue)); Map<String, Policy> policyMap = policyList.stream().collect(Collectors.toMap(Policy::getPolicyNo, a -> a, (oldValue, newValue) -> newValue));
// 3. 转介人职级信息
Map<String, UserGradeDto> userGradeMap = iAgentAccumulatedFycService.queryUserGradeMap(new ArrayList<>(brokerBizIdSet));
fortuneVOList.forEach(fortuneVO -> { fortuneVOList.forEach(fortuneVO -> {
String commissionBizId = fortuneVO.getCommissionExpectedBizId(); String commissionBizId = fortuneVO.getCommissionExpectedBizId();
// 设置来佣金额和比例 // 设置来佣金额和比例
...@@ -152,6 +163,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -152,6 +163,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
if (commissionExpected != null) { if (commissionExpected != null) {
fortuneVO.setCommissionPaidAmount(commissionExpected.getPaidAmount()); fortuneVO.setCommissionPaidAmount(commissionExpected.getPaidAmount());
fortuneVO.setCommissionPaidRatio(commissionExpected.getPaidRatio()); fortuneVO.setCommissionPaidRatio(commissionExpected.getPaidRatio());
fortuneVO.setCommissionPendingRatio(commissionExpected.getPendingRatio());
} }
// 设置保单信息 // 设置保单信息
...@@ -161,6 +173,12 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -161,6 +173,12 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
fortuneVO.setInsuranceCompany(policy.getInsuranceCompany()); fortuneVO.setInsuranceCompany(policy.getInsuranceCompany());
fortuneVO.setProductName(policy.getProductName()); fortuneVO.setProductName(policy.getProductName());
} }
// 设置转介人职级
UserGradeDto userGradeDto = userGradeMap.get(fortuneVO.getBrokerBizId());
if (userGradeDto != null) {
fortuneVO.setBrokerGradeName(userGradeDto.getGradeName());
}
}); });
fortuneVOPage.setRecords(fortuneVOList); fortuneVOPage.setRecords(fortuneVOList);
......
...@@ -225,9 +225,9 @@ public class CommissionVO implements Serializable { ...@@ -225,9 +225,9 @@ public class CommissionVO implements Serializable {
private BigDecimal paidRatio; private BigDecimal paidRatio;
/** /**
* 达成率缺口= 1 - 本期实佣率/产品本期来佣率 * 达成率缺口= 1 - 本期累计入账比例/产品本期来佣率
*/ */
@Schema(description = "达成率缺口= 1 - 累积实佣率/产品本期来佣率") @Schema(description = "达成率缺口= 1 - 本期累计入账比例/产品本期来佣率")
private BigDecimal pendingRatio; private BigDecimal pendingRatio;
/** /**
......
...@@ -114,6 +114,12 @@ public class FortuneVO implements Serializable { ...@@ -114,6 +114,12 @@ public class FortuneVO implements Serializable {
private BigDecimal commissionPaidRatio; private BigDecimal commissionPaidRatio;
/** /**
* 入账达成率缺口 (%)
*/
@Schema(description = "入账达成率缺口 (%)")
private BigDecimal commissionPendingRatio;
/**
* 本次已来佣金额 * 本次已来佣金额
*/ */
// @Schema(description = "本次已来佣金额") // @Schema(description = "本次已来佣金额")
...@@ -138,6 +144,12 @@ public class FortuneVO implements Serializable { ...@@ -138,6 +144,12 @@ public class FortuneVO implements Serializable {
private String broker; private String broker;
/** /**
* 转介人职级
*/
@Schema(description = "转介人职级")
private String brokerGradeName;
/**
* 转介人业务ID * 转介人业务ID
*/ */
@Schema(description = "转介人业务ID") @Schema(description = "转介人业务ID")
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
<result property="expectedAmount" column="expected_amount" /> <result property="expectedAmount" column="expected_amount" />
<result property="paidAmount" column="paid_amount" /> <result property="paidAmount" column="paid_amount" />
<result property="paidRatio" column="paid_ratio" /> <result property="paidRatio" column="paid_ratio" />
<result property="pendingRatio" column="pending_ratio" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<result property="isDeleted" column="is_deleted" /> <result property="isDeleted" column="is_deleted" />
<result property="creatorId" column="creator_id" /> <result property="creatorId" column="creator_id" />
...@@ -45,7 +46,7 @@ ...@@ -45,7 +46,7 @@
policy_no,premium,policy_currency,insurance_company_biz_id,product_launch_biz_id, policy_no,premium,policy_currency,insurance_company_biz_id,product_launch_biz_id,
reconciliation_company,reconciliation_company_code,reconciliation_company_biz_id,commission_period, reconciliation_company,reconciliation_company_code,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,commission_ratio,amount,currency,default_exchange_rate,expected_amount, total_period,commission_name,commission_type,commission_ratio,amount,currency,default_exchange_rate,expected_amount,
commission_date,status,status_desc,paid_amount,paid_ratio,remark,is_deleted,creator_id, commission_date,status,status_desc,paid_amount,paid_ratio,pending_ratio,remark,is_deleted,creator_id,
updater_id,create_time,update_time updater_id,create_time,update_time
</sql> </sql>
......
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