Commit 4cb474bc by jianan

出账检核-增加币种18

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