Commit 1df945a4 by zhangxingmin

push

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