Commit 96d09920 by zhangxingmin

push

parent 3ccd3df1
...@@ -13,6 +13,7 @@ import com.yd.common.result.Result; ...@@ -13,6 +13,7 @@ import com.yd.common.result.Result;
import com.yd.csf.api.dto.QueryCommissionExpectedByPageNewResponse; import com.yd.csf.api.dto.QueryCommissionExpectedByPageNewResponse;
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.api.dto.ReceivableReportResponse;
import com.yd.csf.api.service.ApiCommissionExpectedService;
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;
...@@ -32,6 +33,7 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -32,6 +33,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -68,6 +70,8 @@ public class ApiCommissionExpectedController { ...@@ -68,6 +70,8 @@ public class ApiCommissionExpectedController {
private PolicyFollowService policyFollowService; private PolicyFollowService policyFollowService;
@Resource @Resource
private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient; private ApiInsuranceReconciliationCompanyFeignClient companyFeignClient;
@Autowired
private ApiCommissionExpectedService apiCommissionExpectedService;
/** /**
* 批量新增预计入账 * 批量新增预计入账
...@@ -249,12 +253,12 @@ public class ApiCommissionExpectedController { ...@@ -249,12 +253,12 @@ public class ApiCommissionExpectedController {
} }
/** /**
* 应收款导出 * 应收款导出(旧)
* *
* @param commissionExpectedQueryRequest * @param commissionExpectedQueryRequest
* @return * @return
*/ */
@PostMapping("/export") @PostMapping("/export/old")
@Operation(summary = "应收款导出") @Operation(summary = "应收款导出")
public void exportCommissionExpected(@RequestBody CommissionExpectedQueryRequest commissionExpectedQueryRequest, HttpServletResponse response) throws UnsupportedEncodingException { public void exportCommissionExpected(@RequestBody CommissionExpectedQueryRequest commissionExpectedQueryRequest, HttpServletResponse response) throws UnsupportedEncodingException {
if (commissionExpectedQueryRequest == null) { if (commissionExpectedQueryRequest == null) {
...@@ -287,6 +291,18 @@ public class ApiCommissionExpectedController { ...@@ -287,6 +291,18 @@ public class ApiCommissionExpectedController {
} }
/** /**
* 应收款导出(新)
*
* @param commissionExpectedQueryRequest
* @return
*/
@PostMapping("/export")
@Operation(summary = "应收款导出")
public void exportCommissionExpectedNew(@RequestBody CommissionExpectedQueryRequest commissionExpectedQueryRequest, HttpServletResponse response) throws UnsupportedEncodingException {
apiCommissionExpectedService.exportCommissionExpectedNew(commissionExpectedQueryRequest,response);
}
/**
* 获取保单应收款 * 获取保单应收款
*/ */
@PostMapping("/getExpectedCommissionByProductlaunchId") @PostMapping("/getExpectedCommissionByProductlaunchId")
......
package com.yd.csf.api.service;
import com.yd.csf.service.dto.CommissionExpectedQueryRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
public interface ApiCommissionExpectedService {
void exportCommissionExpectedNew(CommissionExpectedQueryRequest commissionExpectedQueryRequest, HttpServletResponse response) throws UnsupportedEncodingException;
}
package com.yd.csf.api.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.exception.BusinessException;
import com.yd.csf.api.service.ApiCommissionExpectedService;
import com.yd.csf.service.dto.CommissionExpectedQueryRequest;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.service.PolicyFollowService;
import com.yd.csf.service.vo.CommissionExpectedExportDTO;
import com.yd.csf.service.vo.CommissionExpectedExportNewDTO;
import com.yd.csf.service.vo.CommissionExpectedNewVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
public class ApiCommissionExpectedServiceImpl implements ApiCommissionExpectedService {
@Resource
private PolicyFollowService policyFollowService;
@Resource
private CommissionExpectedService commissionExpectedService;
/**
* 应收款导出(新)
*
* @param commissionExpectedQueryRequest
* @return
*/
@Override
public void exportCommissionExpectedNew(CommissionExpectedQueryRequest commissionExpectedQueryRequest, HttpServletResponse response) throws UnsupportedEncodingException {
if (commissionExpectedQueryRequest == null) {
throw new RuntimeException("查询参数不能为空");
}
// 设置响应头
String fileName = URLEncoder.encode("应收款管理数据", "UTF-8").replaceAll("\\+", "%20");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
//保單持有人(中/英、繁简/大小写)、签单人、转介人名称(主)、受保人(中/英、繁简/大小写)、查询保单号列表
List<String> queryPolicyNoList = policyFollowService.queryPolicyNoList(commissionExpectedQueryRequest.getPolicyHolder(),
commissionExpectedQueryRequest.getSigner(),
commissionExpectedQueryRequest.getBrokerName(),
commissionExpectedQueryRequest.getInsured());
// 构建查询条件
commissionExpectedQueryRequest.setPolicyNoList(queryPolicyNoList);
QueryWrapper<CommissionExpected> queryWrapper = commissionExpectedService.getQueryWrapper(commissionExpectedQueryRequest);
// 先查询所有符合条件的记录列表
List<CommissionExpected> allCommissionExpectedList = commissionExpectedService.list(queryWrapper);
if (CollectionUtils.isEmpty(allCommissionExpectedList)) {
throw new BusinessException("无导出数据");
}
commissionExpectedQueryRequest.setPageNo(1);
commissionExpectedQueryRequest.setPageSize(99999999);
Page<CommissionExpectedNewVO> page = commissionExpectedService.getCommissionExpectedVONewPage(commissionExpectedQueryRequest,allCommissionExpectedList);
// 转换为导出DTO
List<CommissionExpectedExportNewDTO> exportDataList = page.getRecords().stream()
.map(CommissionExpectedExportNewDTO::convertToExportDTO)
.collect(Collectors.toList());
// 使用EasyExcel导出
try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), CommissionExpectedExportDTO.class).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet("应收款数据").build();
excelWriter.write(exportDataList, writeSheet);
} catch (Exception e) {
throw new RuntimeException("导出应收款数据失败", e);
}
}
}
package com.yd.csf.service.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.CommissionExpected;
import lombok.Data;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ContentRowHeight(15)
@HeadRowHeight(20)
@ColumnWidth(20)
public class CommissionExpectedExportNewDTO {
/**
* 是否实收:1-预计(预计来佣记录) 2-实收(保单来佣表记录)*
*/
@ExcelProperty("是否实收")
private String typeName;
/**
* 应收款类型 R=关联保单应收单 U=非关联保单应收单
*/
@ExcelProperty("应收单类型")
private String commissionBizType;
/**
* 组编号(应收单编号)*
*/
@ExcelProperty("应收单编号")
private String no;
/**
* 预计来佣-保单号
*/
@ExcelProperty("保单号")
private String policyNo;
/**
* 预计来佣-对账公司
*/
@ExcelProperty("对账公司")
private String reconciliationCompany;
/**
* 预计来佣-入账状态 0=待入账 1=完成入账 2=部分入账 3=已失效
*/
@ExcelProperty("入账状态")
private String status;
/**
* 预计来佣-佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@ExcelProperty("入账期数")
private Integer commissionPeriod;
/**
* 预计来佣-总来佣期数
*/
@ExcelProperty("入账总期数")
private Integer totalPeriod;
/**
* 预计来佣-来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@ExcelProperty("入账项目")
private String commissionName;
/**
* 预计来佣-入账年月(估) * (预计来佣日期)
*/
@ExcelProperty("入账年月(估)")
@DateTimeFormat("yyyyMM")
private Date commissionDateMonth;
/**
* 入账检核记录-入账年月实(来佣日期 yyyyMM)
*/
@ExcelProperty("入账年月(实)")
@DateTimeFormat("yyyyMM")
private Date commissionDate;
/**
* 预计来佣-已入账来佣比例 (%) ( 累积已入账比例 = 预计来佣实佣率realRate/产品对应来佣率)
*/
@ExcelProperty("累积已入账比例")
private BigDecimal totalRevenueRatio;
/**
* 预计来佣-预计入账比例 (%)(产品对应来佣率)
*/
@ExcelProperty("产品对应来佣率")
private BigDecimal commissionRatio;
/**
* 入账检核记录-实佣率(入账金额/结算汇率/期交保费) *
* 如果这里是否实收是预计:realRate统计当前预计下面的实际来拥记录的实佣率累加和
* 如果这里是否实收是实收:realRate取realCurrentCommissionRatio赋值
*/
@ExcelProperty("实佣率")
private BigDecimal realRate;
/**
* 达成率缺口(1-实佣率/产品对应来佣率)*
*/
@ExcelProperty("达成率缺口")
private BigDecimal gapRate;
/**
* 入账检核记录-当前结算汇率(结算汇率(实))
*/
@ExcelProperty("结算汇率实")
private BigDecimal realExchangeRate;
/**
* 入账检核记录-来佣金额(已入账金额)(预计类型需要统计累计和值)
*/
@ExcelProperty("已入账金额")
private BigDecimal realAmount;
/**
* 入账检核记录-入账检核年月 yyyyMM(检核年月)
*/
@ExcelProperty("检核年月")
private String realReconciliationYearMonth;
/**
* 入账检核记录-本次入账比例(实佣率/产品对应来佣率)
*/
@ExcelProperty("本次入账比例")
private BigDecimal revenueRatio;
/**
* 预计来佣-待入账金额
*/
@ExcelProperty("待入账金额")
private BigDecimal pendingAmount;
/**
* 预计来佣-预计入账金额(HKD)
*/
@ExcelProperty("预计入账金额")
private BigDecimal expectedAmount;
/**
* 预计来佣-结算汇率(估)
*/
@ExcelProperty("结算汇率估")
private BigDecimal defaultExchangeRate;
/**
* 预计来佣-保险公司
*/
@ExcelProperty("保险公司")
private String insuranceCompany;
/**
* 预计来佣-产品计划名称
*/
@ExcelProperty("产品计划")
private String productName;
/**
* 年期(供款年期)
*/
@ExcelProperty("年期")
private Integer issueNumber;
/**
* 预计来佣-保单币种
*/
@ExcelProperty("保单币种")
private String policyCurrency;
/**
* 预计来佣-期交保费
*/
@ExcelProperty("期交保费")
private Object premium;
/**
* 入账检核记录-通用备注
*/
@ExcelProperty("备注")
private String realRemark;
/**
* 入账检核记录-更新人名称
*/
@ExcelProperty("操作人")
private String realUpdaterName;
/**
* 入账检核记录-更新时间
*/
@ExcelProperty("操作时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ColumnWidth(20)
private Date realUpdateTime;
/**
* 将对象转换为导出DTO
*/
public static CommissionExpectedExportNewDTO convertToExportDTO(CommissionExpectedNewVO vo) {
CommissionExpectedExportNewDTO dto = new CommissionExpectedExportNewDTO();
BeanUtils.copyProperties(vo,dto);
dto.setTypeName(vo.getType() == 1 ? "预计" : "实收");
dto.setCommissionBizType("R".equals(vo.getCommissionBizType()) ? "关联保单应收单" : "非关联保单应收单");
dto.setStatus(getStatusText(vo.getStatus()));
return dto;
}
/**
* 获取状态文本
*/
public static String getStatusText(String status) {
if (status == null) return "未知";
switch (status) {
case "0":
return "待入账";
case "1":
return "完成入账";
case "2":
return "部分入账";
case "3":
return "已失效";
default:
return "未知";
}
}
}
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