Commit 53890480 by zhangxingmin

Merge remote-tracking branch 'origin/test' into test

parents d1563fed f153c166
...@@ -50,6 +50,9 @@ public class ApiExpectedFortunePageResponse { ...@@ -50,6 +50,9 @@ public class ApiExpectedFortunePageResponse {
@Schema(description = "职级") @Schema(description = "职级")
private String brokerGradeName; private String brokerGradeName;
@Schema(description = "关联人员")
private String amountSourceName;
@Schema(description = "团队名称") @Schema(description = "团队名称")
private String team; private String team;
...@@ -83,7 +86,7 @@ public class ApiExpectedFortunePageResponse { ...@@ -83,7 +86,7 @@ public class ApiExpectedFortunePageResponse {
private BigDecimal exchangeRate; private BigDecimal exchangeRate;
@Schema(description = "保单币种->HKD汇率") @Schema(description = "保单币种->HKD汇率")
private BigDecimal defaultExchangeRate; private BigDecimal originalToHkdRate;
@Schema(description = "HKD->发放币种汇率") @Schema(description = "HKD->发放币种汇率")
private BigDecimal hkdToPayoutRate; private BigDecimal hkdToPayoutRate;
...@@ -136,18 +139,9 @@ public class ApiExpectedFortunePageResponse { ...@@ -136,18 +139,9 @@ public class ApiExpectedFortunePageResponse {
@Schema(description = "剩余发放折合港币金额") @Schema(description = "剩余发放折合港币金额")
private BigDecimal unpaidRuleAmounthHkd; private BigDecimal unpaidRuleAmounthHkd;
@Schema(description = "原币→港币汇率")
private BigDecimal originalToHkdRate;
@Schema(description = "发放币种金额") @Schema(description = "发放币种金额")
private BigDecimal payoutAmount; private BigDecimal payoutAmount;
@Schema(description = "期交保费") @Schema(description = "期交保费")
private BigDecimal premium; private BigDecimal premium;
......
...@@ -133,13 +133,13 @@ public class ExpectedFortune implements Serializable { ...@@ -133,13 +133,13 @@ public class ExpectedFortune implements Serializable {
private String fortuneType; private String fortuneType;
/** /**
* 奖金来源id(类型:转介人等,如果是转介人,这里就是这个奖来自这个转介人身上的) * 奖金来源id(类型:转介人等,如果是转介人,这里就是这个奖来自这个转介人身上的)
*/ */
@TableField("amount_source_id") @TableField("amount_source_id")
private String amountSourceId; private String amountSourceId;
/** /**
* 奖金来源名称(类型:转介人等) * 奖金来源名称(类型:转介人等)
*/ */
@TableField("amount_source_name") @TableField("amount_source_name")
private String amountSourceName; private String amountSourceName;
......
...@@ -785,6 +785,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -785,6 +785,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
BigDecimal hkdAmount = fortune.getRuleAmount().multiply(exchangeRate); BigDecimal hkdAmount = fortune.getRuleAmount().multiply(exchangeRate);
fortune.setHkdAmount(hkdAmount); fortune.setHkdAmount(hkdAmount);
fortune.setCurrentPaymentAmount(fortune.getRuleAmount());
fortune.setCurrentPaymentHkdAmount(hkdAmount); fortune.setCurrentPaymentHkdAmount(hkdAmount);
// 重新计算发放币种金额 // 重新计算发放币种金额
BigDecimal payoutAmount = hkdAmount.multiply(expectedFortune.getHkdToPayoutRate()); BigDecimal payoutAmount = hkdAmount.multiply(expectedFortune.getHkdToPayoutRate());
......
...@@ -156,10 +156,11 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe ...@@ -156,10 +156,11 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
// 查找对应的实际发佣 // 查找对应的实际发佣
List<ApiExpectedFortunePageResponse> matchedList = actualMap.get(expected.getExpectedFortuneBizId()); List<ApiExpectedFortunePageResponse> matchedList = actualMap.get(expected.getExpectedFortuneBizId());
if (CollUtil.isNotEmpty(matchedList)) { if (CollUtil.isNotEmpty(matchedList)) {
// 设置实际出账记录的字段:待出账金额(估)、已出账比例、未出账比例、已出账金额 // 设置实际出账记录的字段:持有比例、保费、关联人员
matchedList.forEach(actual -> { matchedList.forEach(actual -> {
actual.setBrokerRatio(expected.getBrokerRatio()); actual.setBrokerRatio(expected.getBrokerRatio());
actual.setPremium(expected.getPremium()); actual.setPremium(expected.getPremium());
actual.setAmountSourceName(expected.getAmountSourceName());
}); });
sortedList.addAll(matchedList); sortedList.addAll(matchedList);
...@@ -365,6 +366,8 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe ...@@ -365,6 +366,8 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
Set<String> policyNoList = records.stream().map(ApiExpectedFortunePageResponse::getPolicyNo).collect(Collectors.toSet()); Set<String> policyNoList = records.stream().map(ApiExpectedFortunePageResponse::getPolicyNo).collect(Collectors.toSet());
Map<String, PolicyFollow> policyFollowMap = policyFollowService.queryPolicyFollowMap(policyNoList); Map<String, PolicyFollow> policyFollowMap = policyFollowService.queryPolicyFollowMap(policyNoList);
// 5. 补充关联人员信息
for (ApiExpectedFortunePageResponse vo : records) { for (ApiExpectedFortunePageResponse vo : records) {
UserGradeDto userGradeDto = userGradeMap.get(vo.getBrokerBizId()); UserGradeDto userGradeDto = userGradeMap.get(vo.getBrokerBizId());
if (userGradeDto != null) { if (userGradeDto != null) {
......
...@@ -183,6 +183,8 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -183,6 +183,8 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
for (Fortune item : fortuneList) { for (Fortune item : fortuneList) {
Fortune updateFortune = new Fortune(); Fortune updateFortune = new Fortune();
updateFortune.setId(item.getId()); updateFortune.setId(item.getId());
updateFortune.setExpectedFortuneBizId(item.getExpectedFortuneBizId());
updateFortune.setRuleAmount(item.getRuleAmount());
updateFortune.setFortuneAccountBizId(fortuneAccountBizId); updateFortune.setFortuneAccountBizId(fortuneAccountBizId);
updateFortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue()); updateFortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
updateFortune.setReconciliationOperator(currentLoginUser.getRealName()); updateFortune.setReconciliationOperator(currentLoginUser.getRealName());
...@@ -227,7 +229,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -227,7 +229,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
if (ef != null) { if (ef != null) {
BigDecimal currentPaymentRatio = BigDecimal.ZERO; BigDecimal currentPaymentRatio = BigDecimal.ZERO;
if (BigDecimal.ZERO.compareTo(ef.getRuleAmount()) != 0) { if (BigDecimal.ZERO.compareTo(ef.getRuleAmount()) != 0) {
currentPaymentRatio = f.getCurrentPaymentAmount() currentPaymentRatio = f.getRuleAmount()
.divide(ef.getRuleAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); .divide(ef.getRuleAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
} }
f.setCurrentPaymentRatio(currentPaymentRatio); f.setCurrentPaymentRatio(currentPaymentRatio);
......
...@@ -60,6 +60,9 @@ public class ExpectedFortuneExportDTO { ...@@ -60,6 +60,9 @@ public class ExpectedFortuneExportDTO {
@ExcelProperty("出账项目") @ExcelProperty("出账项目")
private String fortuneName; private String fortuneName;
@ExcelProperty("关联人员")
private String amountSourceName;
@ExcelProperty("出账年月(估)") @ExcelProperty("出账年月(估)")
@DateTimeFormat("yyyy-MM") @DateTimeFormat("yyyy-MM")
@ColumnWidth(25) @ColumnWidth(25)
...@@ -145,6 +148,7 @@ public class ExpectedFortuneExportDTO { ...@@ -145,6 +148,7 @@ public class ExpectedFortuneExportDTO {
dto.setBroker(vo.getBroker()); dto.setBroker(vo.getBroker());
dto.setTeam(vo.getTeam()); dto.setTeam(vo.getTeam());
dto.setFortuneName(vo.getFortuneName()); dto.setFortuneName(vo.getFortuneName());
dto.setAmountSourceName(vo.getAmountSourceName());
dto.setBrokerRatio(vo.getBrokerRatio()); dto.setBrokerRatio(vo.getBrokerRatio());
dto.setAmount(vo.getHkdAmount()); dto.setAmount(vo.getHkdAmount());
dto.setCurrency("港币"); dto.setCurrency("港币");
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
MAX(ef.fortune_total_period) as fortuneTotalPeriod, MAX(ef.fortune_total_period) as fortuneTotalPeriod,
ifnull(sum(ef.original_amount), 0) as amount, ifnull(sum(ef.original_amount), 0) as amount,
ifnull(sum(ef.hkd_amount), 0) as hkdAmount, ifnull(sum(ef.hkd_amount), 0) as hkdAmount,
MAX(ef.original_currency) as currency, MAX(ef.payout_currency) as currency,
ifnull(sum(ef.paid_amount), 0) as paidAmount, ifnull(sum(ef.paid_amount), 0) as paidAmount,
ifnull(sum(ef.unpaid_amount), 0) as unpaidAmount, ifnull(sum(ef.unpaid_amount), 0) as unpaidAmount,
case when ifnull(sum(ef.hkd_amount), 0) > 0 case when ifnull(sum(ef.hkd_amount), 0) > 0
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
end as unpaidRatio, end as unpaidRatio,
MAX(pf.first_broker) as broker, MAX(pf.first_broker) as broker,
MAX(pf.first_broker_biz_id) as brokerBizId, MAX(pf.first_broker_biz_id) as brokerBizId,
DATE_ADD(DATE_ADD(MAX(p.effective_date), INTERVAL 2 MONTH), INTERVAL (ef.fortune_period - 1) YEAR) as payoutDate MAX(ef.payout_date) as payoutDate
from expected_fortune ef from expected_fortune ef
left join policy p on ef.policy_no = p.policy_no left join policy p on ef.policy_no = p.policy_no
left join policy_follow pf on ef.policy_no = pf.policy_no left join policy_follow pf on ef.policy_no = pf.policy_no
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
ef.fortune_total_period as fortuneTotalPeriod, ef.fortune_total_period as fortuneTotalPeriod,
ifnull(ef.original_amount, 0) as amount, ifnull(ef.original_amount, 0) as amount,
ifnull(ef.hkd_amount, 0) as hkdAmount, ifnull(ef.hkd_amount, 0) as hkdAmount,
ef.original_currency as currency, ef.payout_currency as currency,
ifnull(ef.paid_amount, 0) as paidAmount, ifnull(ef.paid_amount, 0) as paidAmount,
ifnull(ef.unpaid_amount, 0) as unpaidAmount, ifnull(ef.unpaid_amount, 0) as unpaidAmount,
case when ifnull(ef.hkd_amount, 0) > 0 case when ifnull(ef.hkd_amount, 0) > 0
...@@ -163,6 +163,7 @@ ...@@ -163,6 +163,7 @@
ef.broker_biz_id, ef.broker_biz_id,
ef.team, ef.team,
ef.team_biz_id, ef.team_biz_id,
ef.amount_source_name,
ef.fortune_name, ef.fortune_name,
ef.fortune_type, ef.fortune_type,
ef.broker_ratio, ef.broker_ratio,
...@@ -221,6 +222,7 @@ ...@@ -221,6 +222,7 @@
f.broker_biz_id, f.broker_biz_id,
f.team, f.team,
f.team_biz_id, f.team_biz_id,
NULL as amount_source_name,
f.fortune_name, f.fortune_name,
f.fortune_type, f.fortune_type,
NULL as broker_ratio, NULL as broker_ratio,
...@@ -385,22 +387,13 @@ ...@@ -385,22 +387,13 @@
</select> </select>
<select id="queryListStatistics" resultType="com.yd.csf.service.vo.ExpectedFortuneStatisticsVO"> <select id="queryListStatistics" resultType="com.yd.csf.service.vo.ExpectedFortuneStatisticsVO">
SELECT WITH filtered_data AS (
COALESCE(SUM(hkd_amount), 0) AS totalExpectedAmount,
COALESCE(SUM(paid_amount), 0) AS totalPaidAmount,
COALESCE(SUM(unpaid_amount), 0) AS totalUnpaidAmount,
COALESCE(SUM(totalPremiumAmount), 0) AS totalPremiumAmount,
COUNT(DISTINCT policy_no) AS totalPolicyCount
FROM (
SELECT SELECT
ef.hkd_amount, ef.hkd_amount,
ef.paid_amount, ef.paid_amount,
ef.unpaid_amount, ef.unpaid_amount,
ef.policy_no, ef.policy_no,
(SELECT p.total_payment_premium * ef.default_exchange_rate ef.default_exchange_rate
FROM policy p
WHERE p.policy_no = ef.policy_no
) AS totalPremiumAmount
FROM expected_fortune ef FROM expected_fortune ef
WHERE ef.is_deleted = 0 WHERE ef.is_deleted = 0
AND ef.is_part IN (0, 1) AND ef.is_part IN (0, 1)
...@@ -409,7 +402,20 @@ ...@@ -409,7 +402,20 @@
AND ${ew.sqlSegment} AND ${ew.sqlSegment}
</if> </if>
</if> </if>
) AS statistics ),
premium_total AS (
SELECT SUM(p.total_payment_premium * dp.default_exchange_rate) AS total_premium
FROM (SELECT DISTINCT policy_no, default_exchange_rate FROM filtered_data) dp
INNER JOIN policy p ON p.policy_no = dp.policy_no
)
SELECT
COALESCE(SUM(fd.hkd_amount), 0) AS totalExpectedAmount,
COALESCE(SUM(fd.paid_amount), 0) AS totalPaidAmount,
COALESCE(SUM(fd.unpaid_amount), 0) AS totalUnpaidAmount,
COALESCE(pt.total_premium, 0) AS totalPremiumAmount,
COUNT(DISTINCT fd.policy_no) AS totalPolicyCount
FROM filtered_data fd
CROSS JOIN premium_total pt
</select> </select>
<select id="queryListNewCount" resultType="java.lang.Long"> <select id="queryListNewCount" resultType="java.lang.Long">
......
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