Commit 266c74cd by jianan

前端对接问题修复108

parent 527cdcf1
...@@ -4,10 +4,12 @@ import com.alibaba.excel.EasyExcel; ...@@ -4,10 +4,12 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode; import com.yd.common.enums.ResultCode;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.api.dto.QueryCommissionExpectedByPageResponse; import com.yd.csf.api.dto.QueryCommissionExpectedByPageResponse;
import com.yd.csf.api.dto.ReceivableReportResponse;
import com.yd.csf.service.common.ErrorCode; import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.CommissionExpected; import com.yd.csf.service.model.CommissionExpected;
...@@ -15,8 +17,10 @@ import com.yd.csf.service.service.CommissionExpectedService; ...@@ -15,8 +17,10 @@ import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.vo.CommissionExpectedExportDTO; import com.yd.csf.service.vo.CommissionExpectedExportDTO;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO; import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO; import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -231,4 +235,37 @@ public class ApiCommissionExpectedController { ...@@ -231,4 +235,37 @@ public class ApiCommissionExpectedController {
return Result.success(true); return Result.success(true);
} }
/**
* 应收款报表
*
* @param commissionExpectedQueryRequest
* @return
*/
@PostMapping("/receivable_report")
@Operation(summary = "应收款报表")
public Result<ReceivableReportResponse> receivableReport(@RequestBody CommissionExpectedQueryRequest commissionExpectedQueryRequest) {
// 构建查询条件
QueryWrapper<CommissionExpected> queryWrapper = commissionExpectedService.getQueryWrapper(commissionExpectedQueryRequest);
// 先查询所有符合条件的记录ID(用于统计)
List<CommissionExpected> allCommissionExpectedList = commissionExpectedService.list(queryWrapper);
List<Long> allExpectedIdList = allCommissionExpectedList.stream().map(CommissionExpected::getId).collect(Collectors.toList());
// 查询统计数据(基于所有符合条件的记录)
CommissionExpectedStatisticsVO statisticsVO = commissionExpectedService.getExpectedStatistics(allExpectedIdList);
// 应收款报表分页查询 - 按保单号和期数维度统计
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);
}
// 组装返回结果
ReceivableReportResponse response = new ReceivableReportResponse();
response.setStatisticsVO(statisticsVO);
response.setPage(receivableReportPage);
return Result.success(response);
}
} }
package com.yd.csf.api.dto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.ReceivableReportVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 应收款报表响应
*/
@Data
@Schema(description = "应收款报表响应")
public class ReceivableReportResponse {
@Schema(description = "应收款统计信息")
private CommissionExpectedStatisticsVO statisticsVO;
@Schema(description = "应收款报表分页列表 - 按保单号和期数维度统计")
private IPage<ReceivableReportVO> page;
}
...@@ -550,9 +550,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -550,9 +550,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
ExpectedFortuneStatisticsVO statisticsVO = this.getStatistics(allFortuneIdList); ExpectedFortuneStatisticsVO statisticsVO = this.getStatistics(allFortuneIdList);
// 应付款报表分页查询 - 按保单号和期数维度统计 // 应付款报表分页查询 - 按保单号和期数维度统计
Page<com.yd.csf.service.vo.PayableReportVO> reportPage = new Page<>(request.getPageNo(), request.getPageSize()); Page<PayableReportVO> reportPage = new Page<>(request.getPageNo(), request.getPageSize());
IPage<com.yd.csf.service.vo.PayableReportVO> payableReportPage = null; IPage<PayableReportVO> payableReportPage = new Page<>(request.getPageNo(), request.getPageSize());
if (!CollectionUtils.isEmpty(allFortuneIdList)) { if (CollectionUtils.isEmpty(allFortuneIdList)) {
payableReportPage = iExpectedFortuneService.payableReportPage(reportPage, allFortuneIdList); payableReportPage = iExpectedFortuneService.payableReportPage(reportPage, allFortuneIdList);
} }
......
package com.yd.csf.service.dao; package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
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;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO; import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.ReceivableReportVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -16,6 +19,15 @@ import java.util.List; ...@@ -16,6 +19,15 @@ import java.util.List;
public interface CommissionExpectedMapper extends BaseMapper<CommissionExpected> { public interface CommissionExpectedMapper extends BaseMapper<CommissionExpected> {
CommissionExpectedStatisticsVO getExpectedStatistics(@Param("expectedIds")List<Long> expectedIds); CommissionExpectedStatisticsVO getExpectedStatistics(@Param("expectedIds")List<Long> expectedIds);
/**
* 应收款报表 - 按保单号和期数维度统计(分页)
* @param page 分页参数
* @param expectedIds 预计来佣ID列表
* @return 应收款报表VO分页列表
*/
IPage<ReceivableReportVO> receivableReportPage(@Param("page") Page<ReceivableReportVO> page,
@Param("expectedIds") List<Long> expectedIds);
} }
......
package com.yd.csf.service.service; package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.dto.CommissionExpectedAddRequest; import com.yd.csf.service.dto.CommissionExpectedAddRequest;
import com.yd.csf.service.dto.CommissionExpectedQueryRequest; import com.yd.csf.service.dto.CommissionExpectedQueryRequest;
...@@ -9,6 +10,7 @@ import com.yd.csf.service.model.CommissionExpected; ...@@ -9,6 +10,7 @@ import com.yd.csf.service.model.CommissionExpected;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO; import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO; import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
...@@ -58,4 +60,12 @@ public interface CommissionExpectedService extends IService<CommissionExpected> ...@@ -58,4 +60,12 @@ public interface CommissionExpectedService extends IService<CommissionExpected>
CommissionExpected getByBizId(String commissionExpectedBizId); CommissionExpected getByBizId(String commissionExpectedBizId);
void getExpectedCommissionByProductlaunchId(String policyNo, String productLaunchBizId, String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId); void getExpectedCommissionByProductlaunchId(String policyNo, String productLaunchBizId, String insuranceCompanyBizId, String reconciliationCompany, String reconciliationCompanyCode, String reconciliationCompanyBizId);
/**
* 应收款报表 - 按保单号和期数维度统计(分页)
* @param page 分页参数
* @param expectedIds 预计来佣ID列表
* @return 应收款报表VO分页列表
*/
IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, List<Long> expectedIds);
} }
...@@ -3,6 +3,7 @@ package com.yd.csf.service.service.impl; ...@@ -3,6 +3,7 @@ package com.yd.csf.service.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.constant.CommonConstant; import com.yd.common.constant.CommonConstant;
...@@ -21,6 +22,7 @@ import com.yd.csf.service.service.*; ...@@ -21,6 +22,7 @@ import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionExpectedMapper; import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO; import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO; import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.ReceivableReportVO;
import com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient; import com.yd.product.feign.client.expectedspecies.ApiExpectedSpeciesFeignClient;
import com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest; import com.yd.product.feign.request.expectedspecies.ApiExpectedSpeciesListRequest;
import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse; import com.yd.product.feign.response.expectedspecies.ApiExpectedSpeciesListResponse;
...@@ -514,6 +516,11 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -514,6 +516,11 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
} }
} }
@Override
public IPage<ReceivableReportVO> receivableReportPage(Page<ReceivableReportVO> page, List<Long> expectedIds) {
return baseMapper.receivableReportPage(page, expectedIds);
}
} }
......
package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 应收款报表VO - 按保单号和期数维度统计
*/
@Data
public class ReceivableReportVO {
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 对账公司
*/
@Schema(description = "对账公司")
private String reconciliationCompany;
/**
* 入账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "入账期数")
private Integer commissionPeriod;
/**
* 入账总期数
*/
@Schema(description = "入账总期数")
private Integer totalPeriod;
/**
* 入账日(估)
*/
@Schema(description = "入账日(估)(保单生效日+2个月+(期数-1)年)")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDate commissionDate;
/**
* 预计入账比例(%)
*/
@Schema(description = "预计入账比例(%)")
private BigDecimal commissionRatio;
/**
* 预估入账金额(原始币种)
*/
@Schema(description = "预估入账金额(原始币种)")
private BigDecimal amount;
/**
* 预估入账金额(港币)
*/
@Schema(description = "预估入账金额(港币)")
private BigDecimal hkdAmount;
/**
* 已入账金额(港币)
*/
@Schema(description = "已入账金额(港币)")
private BigDecimal paidAmount;
/**
* 待入账金额(港币)
*/
@Schema(description = "待入账金额(港币)")
private BigDecimal unpaidAmount;
/**
* 已入账比例(%)
*/
@Schema(description = "已入账比例(%)")
private BigDecimal paidRatio;
/**
* 待入账比例(%)
*/
@Schema(description = "待入账比例(%)")
private BigDecimal unpaidRatio;
/**
* 结算汇率(估)
*/
@Schema(description = "结算汇率(估)")
private BigDecimal exchangeRate;
/**
* 保险公司
*/
@Schema(description = "保险公司")
private String insuranceCompany;
/**
* 产品计划
*/
@Schema(description = "产品计划")
private String productName;
/**
* 期交保费
*/
@Schema(description = "期交保费")
private BigDecimal premium;
/**
* 保单币种
*/
@Schema(description = "保单币种")
private String policyCurrency;
}
...@@ -64,4 +64,44 @@ ...@@ -64,4 +64,44 @@
</if> </if>
</where> </where>
</select> </select>
<select id="receivableReportPage" resultType="com.yd.csf.service.vo.ReceivableReportVO">
select
ce.policy_no as policyNo,
ce.reconciliation_company as reconciliationCompany,
ce.commission_period as commissionPeriod,
ce.total_period as totalPeriod,
DATE_ADD(DATE_ADD(p.effective_date, INTERVAL 2 MONTH), INTERVAL (ce.commission_period - 1) YEAR) as commissionDate,
ifnull(avg(ce.commission_ratio), 0) as commissionRatio,
ifnull(sum(ce.amount), 0) as amount,
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,
ifnull(avg(ce.default_exchange_rate), 0) as exchangeRate,
p.insurance_company as insuranceCompany,
p.product_name as productName,
ifnull(avg(ce.premium), 0) as premium,
p.currency as policyCurrency
from commission_expected ce
left join policy p on ce.policy_no = p.policy_no
<where>
<if test="expectedIds != null and expectedIds.size > 0">
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
order by ce.policy_no, ce.commission_period
</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