Commit 69d67a28 by zhangxingmin

push

parent c4db7e50
...@@ -401,6 +401,52 @@ public class ApiCommissionExpectedController { ...@@ -401,6 +401,52 @@ public class ApiCommissionExpectedController {
// return Result.success(response); // return Result.success(response);
// } // }
@PostMapping("/receivable_report/statistics")
@Operation(summary = "应收款报表统计")
public Result<ReceivableReportResponse> receivableReportStatistics(@RequestBody CommissionExpectedQueryRequest commissionExpectedQueryRequest) {
//保單持有人(中/英、繁简/大小写)、签单人、转介人名称(主)、受保人(中/英、繁简/大小写)、查询保单号列表
List<String> queryPolicyNoList = new ArrayList<>();
Boolean queryFlag = false;
if (StringUtils.isNotBlank(commissionExpectedQueryRequest.getPolicyHolder())
|| StringUtils.isNotBlank(commissionExpectedQueryRequest.getSigner())
|| StringUtils.isNotBlank(commissionExpectedQueryRequest.getBrokerName())
|| StringUtils.isNotBlank(commissionExpectedQueryRequest.getInsured())
){
queryPolicyNoList = policyFollowService.queryPolicyNoList(
commissionExpectedQueryRequest.getPolicyHolder(),
commissionExpectedQueryRequest.getSigner(),
commissionExpectedQueryRequest.getBrokerName(),
commissionExpectedQueryRequest.getInsured());
queryFlag = true;
}
log.info("应收款报表=>receivableReport=>queryPolicyNoList:{}",JSON.toJSONString(queryPolicyNoList));
// 构建查询条件
commissionExpectedQueryRequest.setPolicyNoList(queryPolicyNoList);
commissionExpectedQueryRequest.setQueryFlag(queryFlag);
QueryWrapper<CommissionExpected> queryWrapper = commissionExpectedService.getQueryWrapper(commissionExpectedQueryRequest);
// 先查询所有符合条件的记录ID(用于统计)
List<CommissionExpected> allCommissionExpectedList = commissionExpectedService.list(queryWrapper);
// 查询统计数据(基于所有符合条件的记录)
CommissionExpectedStatisticsVO statisticsVO = commissionExpectedService.getExpectedStatisticsNew(allCommissionExpectedList);
// 应收款报表分页查询 - 按保单号和期数维度统计
// Page<ReceivableReportVO> reportPage = new Page<>(commissionExpectedQueryRequest.getPageNo(), commissionExpectedQueryRequest.getPageSize());
// IPage<ReceivableReportVO> receivableReportPage = new Page<>(commissionExpectedQueryRequest.getPageNo(), commissionExpectedQueryRequest.getPageSize());
// if (!CollectionUtils.isEmpty(allExpectedIdList)) {
// receivableReportPage = commissionExpectedService.receivableReportPage(reportPage, allExpectedIdList);
// }
// enrichReceivableReportWithCompanyName(receivableReportPage);
// receivableReportPage = convertReceivableReport(receivableReportPage);
// 组装返回结果
ReceivableReportResponse response = new ReceivableReportResponse();
response.setStatisticsVO(statisticsVO);
// response.setPage(receivableReportPage);
return Result.success(response);
}
@PostMapping("/receivable_report") @PostMapping("/receivable_report")
@Operation(summary = "应收款报表") @Operation(summary = "应收款报表")
public Result<ReceivableReportResponse> receivableReport(@RequestBody CommissionExpectedQueryRequest request) { public Result<ReceivableReportResponse> receivableReport(@RequestBody CommissionExpectedQueryRequest request) {
......
...@@ -23,12 +23,12 @@ public interface CommissionExpectedMapper extends BaseMapper<CommissionExpected> ...@@ -23,12 +23,12 @@ public interface CommissionExpectedMapper extends BaseMapper<CommissionExpected>
CommissionExpectedStatisticsVO getExpectedStatistics(@Param("expectedIds")List<Long> expectedIds); CommissionExpectedStatisticsVO getExpectedStatistics(@Param("expectedIds")List<Long> expectedIds);
/** // /**
* 应收款报表 - 按保单号和期数维度统计(分页) // * 应收款报表 - 按保单号和期数维度统计(分页)
* @param page 分页参数 // * @param page 分页参数
* @param expectedIds 预计来佣ID列表 // * @param expectedIds 预计来佣ID列表
* @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("expectedIds") List<Long> expectedIds);
......
...@@ -221,4 +221,99 @@ ...@@ -221,4 +221,99 @@
<!-- 可根据需要添加更多条件,如 statusList 等 --> <!-- 可根据需要添加更多条件,如 statusList 等 -->
</sql> </sql>
<!-- <select id="receivableReportPage" resultType="com.yd.csf.service.vo.ReceivableReportVO">
select
null as receivableNo,
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,
(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,
(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,
MAX(ce.reconciliation_company) as reconciliationCompany,
MAX(ce.reconciliation_company_biz_id) as reconciliationCompanyBizId,
ce.commission_period as commissionPeriod,
MAX(ce.total_period) as totalPeriod,
MAX(ce.commission_date) as commissionDate,
ifnull(sum(ce.commission_ratio), 0) as commissionRatio,
ifnull(sum(ce.paid_ratio), 0) as paid,
ifnull(sum(ce.amount), 0) as amount,
MAX(ce.currency) as currency,
ifnull(sum(ce.expected_amount), 0) as hkdAmount,
ifnull(sum(ce.paid_amount), 0) as paidAmount,
ifnull(sum(ce.expected_amount) - sum(ce.paid_amount), 0) as unpaidAmount,
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)
else 0
end as paidRatio,
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)
else 0
end as unpaidRatio,
MAX(ce.default_exchange_rate) as exchangeRate,
MAX(p.insurance_company) as insuranceCompany,
MAX(p.product_name) as productName,
ifnull(avg(ce.premium), 0) as premium,
MAX(p.currency) as policyCurrency
from commission_expected ce
left join policy p on ce.policy_no = p.policy_no
<where>
ce.commission_biz_type = 'R'
<if test="expectedIds != null and expectedIds.size > 0">
and ce.id in
<foreach collection="expectedIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
and ce.is_deleted = 0
</where>
group by ce.policy_no, ce.commission_period
union all
select
ce.receivable_no as receivableNo,
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,
(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,
(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,
ce.reconciliation_company as reconciliationCompany,
ce.reconciliation_company_biz_id as reconciliationCompanyBizId,
ce.commission_period as commissionPeriod,
ce.total_period as totalPeriod,
ce.commission_date as commissionDate,
null as commissionRatio,
null as paid,
ifnull(ce.amount, 0) as amount,
ce.currency as currency,
ifnull(ce.expected_amount, 0) as hkdAmount,
ifnull(ce.paid_amount, 0) as paidAmount,
ifnull(ce.expected_amount - ce.paid_amount, 0) as unpaidAmount,
case when ifnull(ce.expected_amount, 0) > 0
then round(ifnull(ce.paid_amount, 0) / ifnull(ce.expected_amount, 0) * 100, 2)
else 0
end as paidRatio,
case when ifnull(ce.expected_amount, 0) > 0
then round((ifnull(ce.expected_amount, 0) - ifnull(ce.paid_amount, 0)) / ifnull(ce.expected_amount, 0) * 100, 2)
else 0
end as unpaidRatio,
ce.default_exchange_rate as exchangeRate,
p.insurance_company as insuranceCompany,
p.product_name as productName,
ifnull(ce.premium, 0) as premium,
null as policyCurrency
from commission_expected ce
left join policy p on ce.policy_no = p.policy_no
<where>
ce.commission_biz_type = 'U'
<if test="expectedIds != null and expectedIds.size > 0">
and ce.id in
<foreach collection="expectedIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
and ce.is_deleted = 0
</where>
</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