Commit 53890480 by zhangxingmin

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

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