Commit 91656da4 by zhangxingmin

push

parent 6daca43e
...@@ -384,7 +384,10 @@ public class ApiCommissionExpectedController { ...@@ -384,7 +384,10 @@ public class ApiCommissionExpectedController {
// 应收款报表分页查询 - 按保单号和期数维度统计 // 应收款报表分页查询 - 按保单号和期数维度统计
Page<ReceivableReportVO> reportPage = new Page<>(commissionExpectedQueryRequest.getPageNo(), commissionExpectedQueryRequest.getPageSize()); Page<ReceivableReportVO> reportPage = new Page<>(commissionExpectedQueryRequest.getPageNo(), commissionExpectedQueryRequest.getPageSize());
IPage<ReceivableReportVO> receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, queryWrapper); IPage<ReceivableReportVO> receivableReportPage = new Page<>(commissionExpectedQueryRequest.getPageNo(), commissionExpectedQueryRequest.getPageSize());
if (!CollectionUtils.isEmpty(allExpectedIdList)) {
receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, allExpectedIdList);
}
// enrichReceivableReportWithCompanyName(receivableReportPage); // enrichReceivableReportWithCompanyName(receivableReportPage);
receivableReportPage = convertReceivableReport(receivableReportPage); receivableReportPage = convertReceivableReport(receivableReportPage);
// 组装返回结果 // 组装返回结果
......
...@@ -29,7 +29,7 @@ public interface CommissionExpectedMapper extends BaseMapper<CommissionExpected> ...@@ -29,7 +29,7 @@ public interface CommissionExpectedMapper extends BaseMapper<CommissionExpected>
* @return 应收款报表VO分页列表 * @return 应收款报表VO分页列表
*/ */
IPage<ReceivableReportVO> receivableReportPage(@Param("page") Page<ReceivableReportVO> page, IPage<ReceivableReportVO> receivableReportPage(@Param("page") Page<ReceivableReportVO> page,
@Param(Constants.WRAPPER) QueryWrapper<CommissionExpected> wrapper); @Param("expectedIds") List<Long> expectedIds);
} }
......
...@@ -82,7 +82,7 @@ public interface CommissionExpectedService extends IService<CommissionExpected> ...@@ -82,7 +82,7 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
* @param expectedIds 预计来佣ID列表 * @param expectedIds 预计来佣ID列表
* @return 应收款报表VO分页列表 * @return 应收款报表VO分页列表
*/ */
IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, QueryWrapper<CommissionExpected> wrapper); IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, List<Long> expectedIds);
void testExpectedCommission(String policyNo,String effectiveDate,String coolingOffEndDate) throws IOException; void testExpectedCommission(String policyNo,String effectiveDate,String coolingOffEndDate) throws IOException;
......
...@@ -1482,8 +1482,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -1482,8 +1482,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
} }
@Override @Override
public IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, QueryWrapper<CommissionExpected> wrapper) { public IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, List<Long> expectedIds) {
return baseMapper.receivableReportPage(page, wrapper); return baseMapper.receivableReportPage(page, expectedIds);
} }
@Override @Override
......
...@@ -69,111 +69,98 @@ ...@@ -69,111 +69,98 @@
</select> </select>
<select id="receivableReportPage" resultType="com.yd.csf.service.vo.ReceivableReportVO"> <select id="receivableReportPage" resultType="com.yd.csf.service.vo.ReceivableReportVO">
-- 关联保单应收单 R select
SELECT null as receivableNo,
NULL AS receivableNo, ce.policy_no as policyNo,
ce.policy_no AS policyNo, (select pp.name from policy_policyholder pp where pp.policy_biz_id = p.policy_biz_id limit 1) as policyHolder,
COALESCE(pp.name, '') AS policyHolder, (select pp.name_en from policy_policyholder pp where pp.policy_biz_id = p.policy_biz_id limit 1) as policyHolderEn,
COALESCE(pp.name_en, '') AS policyHolderEn, (select pi.name from policy_insurant pi where pi.policy_biz_id = p.policy_biz_id limit 1) as insured,
COALESCE(pi.name, '') AS insured, (select pi.name_en from policy_insurant pi where pi.policy_biz_id = p.policy_biz_id limit 1) as insuredEn,
COALESCE(pi.name_en, '') AS insuredEn, ce.manual_remark as manualRemark,
MAX(ce.manual_remark) AS manualRemark, MAX(ce.reconciliation_company) as reconciliationCompany,
MAX(ce.reconciliation_company) AS reconciliationCompany, MAX(ce.reconciliation_company_biz_id) as reconciliationCompanyBizId,
MAX(ce.reconciliation_company_biz_id) AS reconciliationCompanyBizId, ce.commission_period as commissionPeriod,
ce.commission_period AS commissionPeriod, MAX(ce.total_period) as totalPeriod,
MAX(ce.total_period) AS totalPeriod, MAX(ce.commission_date) as commissionDate,
MAX(ce.commission_date) AS commissionDate, ifnull(sum(ce.commission_ratio), 0) as commissionRatio,
IFNULL(SUM(ce.commission_ratio), 0) AS commissionRatio, ifnull(sum(ce.paid_ratio), 0) as paid,
IFNULL(SUM(ce.paid_ratio), 0) AS paid, ifnull(sum(ce.amount), 0) as amount,
IFNULL(SUM(ce.amount), 0) AS amount, MAX(ce.currency) as currency,
MAX(ce.currency) AS currency, ifnull(sum(ce.expected_amount), 0) as hkdAmount,
IFNULL(SUM(ce.expected_amount), 0) AS hkdAmount, ifnull(sum(ce.paid_amount), 0) as paidAmount,
IFNULL(SUM(ce.paid_amount), 0) AS paidAmount, ifnull(sum(ce.expected_amount) - sum(ce.paid_amount), 0) as unpaidAmount,
IFNULL(SUM(ce.expected_amount) - SUM(ce.paid_amount), 0) AS unpaidAmount, case when ifnull(sum(ce.expected_amount), 0) > 0
CASE WHEN IFNULL(SUM(ce.expected_amount), 0) > 0 then round(ifnull(sum(ce.paid_amount), 0) / ifnull(sum(ce.expected_amount), 0) * 100, 2)
THEN ROUND(IFNULL(SUM(ce.paid_amount), 0) / IFNULL(SUM(ce.expected_amount), 0) * 100, 2) else 0
ELSE 0 end as paidRatio,
END AS paidRatio, case when ifnull(sum(ce.expected_amount), 0) > 0
CASE WHEN IFNULL(SUM(ce.expected_amount), 0) > 0 then round((ifnull(sum(ce.expected_amount), 0) - ifnull(sum(ce.paid_amount), 0)) / ifnull(sum(ce.expected_amount), 0) * 100, 2)
THEN ROUND((IFNULL(SUM(ce.expected_amount), 0) - IFNULL(SUM(ce.paid_amount), 0)) / IFNULL(SUM(ce.expected_amount), 0) * 100, 2) else 0
ELSE 0 end as unpaidRatio,
END AS unpaidRatio, MAX(ce.default_exchange_rate) as exchangeRate,
MAX(ce.default_exchange_rate) AS exchangeRate, MAX(p.insurance_company) as insuranceCompany,
MAX(p.insurance_company) AS insuranceCompany, MAX(p.product_name) as productName,
MAX(p.product_name) AS productName, ifnull(avg(ce.premium), 0) as premium,
IFNULL(AVG(ce.premium), 0) AS premium, MAX(p.currency) as policyCurrency
MAX(p.currency) AS policyCurrency from commission_expected ce
FROM commission_expected ce left join policy p on ce.policy_no = p.policy_no
LEFT JOIN policy p ON ce.policy_no = p.policy_no <where>
LEFT JOIN ( ce.commission_biz_type = 'R'
SELECT policy_biz_id, name, name_en, <if test="expectedIds != null and expectedIds.size > 0">
ROW_NUMBER() OVER (PARTITION BY policy_biz_id ORDER BY id) AS rn and ce.id in
FROM policy_policyholder <foreach collection="expectedIds" item="item" open="(" close=")" separator=",">
WHERE is_deleted = 0 #{item}
) pp ON p.policy_biz_id = pp.policy_biz_id AND pp.rn = 1 </foreach>
LEFT JOIN ( </if>
SELECT policy_biz_id, name, name_en, and ce.is_deleted = 0
ROW_NUMBER() OVER (PARTITION BY policy_biz_id ORDER BY id) AS rn </where>
FROM policy_insurant group by ce.policy_no, ce.commission_period
WHERE is_deleted = 0 union all
) pi ON p.policy_biz_id = pi.policy_biz_id AND pi.rn = 1 select
WHERE ce.commission_biz_type = 'R' ce.receivable_no as receivableNo,
AND ce.is_deleted = 0 ce.policy_no as policyNo,
${ew.customSqlSegment} (select pp.name from policy_policyholder pp where pp.policy_biz_id = p.policy_biz_id limit 1) as policyHolder,
GROUP BY ce.policy_no, ce.commission_period (select pp.name_en from policy_policyholder pp where pp.policy_biz_id = p.policy_biz_id limit 1) as policyHolderEn,
(select pi.name from policy_insurant pi where pi.policy_biz_id = p.policy_biz_id limit 1) as insured,
UNION ALL (select pi.name_en from policy_insurant pi where pi.policy_biz_id = p.policy_biz_id limit 1) as insuredEn,
ce.manual_remark as manualRemark,
-- 非关联保单应收单 U ce.reconciliation_company as reconciliationCompany,
SELECT ce.reconciliation_company_biz_id as reconciliationCompanyBizId,
ce.receivable_no AS receivableNo, ce.commission_period as commissionPeriod,
ce.policy_no AS policyNo, ce.total_period as totalPeriod,
COALESCE(pp.name, '') AS policyHolder, ce.commission_date as commissionDate,
COALESCE(pp.name_en, '') AS policyHolderEn, null as commissionRatio,
COALESCE(pi.name, '') AS insured, null as paid,
COALESCE(pi.name_en, '') AS insuredEn, ifnull(ce.amount, 0) as amount,
ce.manual_remark AS manualRemark, ce.currency as currency,
ce.reconciliation_company AS reconciliationCompany, ifnull(ce.expected_amount, 0) as hkdAmount,
ce.reconciliation_company_biz_id AS reconciliationCompanyBizId, ifnull(ce.paid_amount, 0) as paidAmount,
ce.commission_period AS commissionPeriod, ifnull(ce.expected_amount - ce.paid_amount, 0) as unpaidAmount,
ce.total_period AS totalPeriod, case when ifnull(ce.expected_amount, 0) > 0
ce.commission_date AS commissionDate, then round(ifnull(ce.paid_amount, 0) / ifnull(ce.expected_amount, 0) * 100, 2)
NULL AS commissionRatio, else 0
NULL AS paid, end as paidRatio,
IFNULL(ce.amount, 0) AS amount, case when ifnull(ce.expected_amount, 0) > 0
ce.currency AS currency, then round((ifnull(ce.expected_amount, 0) - ifnull(ce.paid_amount, 0)) / ifnull(ce.expected_amount, 0) * 100, 2)
IFNULL(ce.expected_amount, 0) AS hkdAmount, else 0
IFNULL(ce.paid_amount, 0) AS paidAmount, end as unpaidRatio,
IFNULL(ce.expected_amount - ce.paid_amount, 0) AS unpaidAmount, ce.default_exchange_rate as exchangeRate,
CASE WHEN IFNULL(ce.expected_amount, 0) > 0 p.insurance_company as insuranceCompany,
THEN ROUND(IFNULL(ce.paid_amount, 0) / IFNULL(ce.expected_amount, 0) * 100, 2) p.product_name as productName,
ELSE 0 ifnull(ce.premium, 0) as premium,
END AS paidRatio, null as policyCurrency
CASE WHEN IFNULL(ce.expected_amount, 0) > 0 from commission_expected ce
THEN ROUND((IFNULL(ce.expected_amount, 0) - IFNULL(ce.paid_amount, 0)) / IFNULL(ce.expected_amount, 0) * 100, 2) left join policy p on ce.policy_no = p.policy_no
ELSE 0 <where>
END AS unpaidRatio, ce.commission_biz_type = 'U'
ce.default_exchange_rate AS exchangeRate, <if test="expectedIds != null and expectedIds.size > 0">
p.insurance_company AS insuranceCompany, and ce.id in
p.product_name AS productName, <foreach collection="expectedIds" item="item" open="(" close=")" separator=",">
IFNULL(ce.premium, 0) AS premium, #{item}
NULL AS policyCurrency </foreach>
FROM commission_expected ce </if>
LEFT JOIN policy p ON ce.policy_no = p.policy_no and ce.is_deleted = 0
LEFT JOIN ( </where>
SELECT policy_biz_id, name, name_en,
ROW_NUMBER() OVER (PARTITION BY policy_biz_id ORDER BY id) AS rn
FROM policy_policyholder
WHERE is_deleted = 0
) pp ON p.policy_biz_id = pp.policy_biz_id AND pp.rn = 1
LEFT JOIN (
SELECT policy_biz_id, name, name_en,
ROW_NUMBER() OVER (PARTITION BY policy_biz_id ORDER BY id) AS rn
FROM policy_insurant
WHERE is_deleted = 0
) pi ON p.policy_biz_id = pi.policy_biz_id AND pi.rn = 1
WHERE ce.commission_biz_type = 'U'
AND ce.is_deleted = 0
${ew.customSqlSegment}
</select> </select>
</mapper> </mapper>
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