Commit 3c7f843a by jianan

前端对接问题修复3

parent 54f66a1d
package com.yd.csf.api.controller;
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.enums.ResultCode;
......@@ -9,6 +12,7 @@ import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.vo.CommissionExpectedExportDTO;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
import io.swagger.v3.oas.annotations.Operation;
......@@ -18,9 +22,11 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -168,4 +174,42 @@ public class ApiCommissionExpectedController {
response.setPage(commissionExpectedService.getCommissionExpectedVOPage(commissionExpectedPage));
return Result.success(response);
}
/**
* 应收款导出
*
* @param commissionExpectedQueryRequest
* @return
*/
@PostMapping("/export")
@Operation(summary = "应收款导出")
public void exportCommissionExpected(@RequestBody 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");
// 查询数据
QueryWrapper<CommissionExpected> queryWrapper = commissionExpectedService.getQueryWrapper(commissionExpectedQueryRequest);
List<CommissionExpected> commissionExpectedList = commissionExpectedService.list(queryWrapper);
// 转换为导出DTO
List<CommissionExpectedExportDTO> exportDataList = commissionExpectedList.stream()
.map(CommissionExpectedExportDTO::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);
}
}
}
......@@ -506,16 +506,13 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
LocalDate payoutDateEnd = request.getPayoutDateEnd();
List<String> statusList = request.getStatusList();
Integer fortunePeriod = request.getFortunePeriod();
String fortuneName = request.getFortuneName();
String fortuneType = request.getFortuneType();
String team = request.getTeam();
String teamBizId = request.getTeamBizId();
String insuranceCompany = request.getInsuranceCompany();
String productName = request.getProductName();
// String reconciliationCompany = request.getReconciliationCompany();
String broker = request.getBroker();
String signer = request.getSigner();
String productLaunchBizId = request.getProductLaunchBizId();
List<String> teamBizIdList = request.getTeamBizIdList();
List<String> insuranceCompanyBizIdList = request.getInsuranceCompanyBizIdList();
List<String> productLaunchBizIdList = request.getProductLaunchBizIdList();
List<String> brokerBizIdList = request.getBrokerBizIdList();
List<String> signerBizIdList = request.getSignerBizIdList();
String fortuneBizType = request.getFortuneBizType();
// 按保单号模糊查询
......@@ -524,15 +521,13 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
queryWrapper.lt(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd);
queryWrapper.in(ObjectUtils.isNotEmpty(statusList), "status", statusList);
queryWrapper.eq(ObjectUtils.isNotEmpty(fortunePeriod), "fortune_period", fortunePeriod);
queryWrapper.like(StringUtils.isNotBlank(fortuneName), "fortune_name", fortuneName);
queryWrapper.eq(StringUtils.isNotBlank(fortuneType), "fortune_type", fortuneType);
queryWrapper.like(StringUtils.isNotBlank(team), "team", team);
queryWrapper.eq(StringUtils.isNotBlank(teamBizId), "team_biz_id", teamBizId);
queryWrapper.like(StringUtils.isNotBlank(insuranceCompany), "insurance_company", insuranceCompany);
queryWrapper.like(StringUtils.isNotBlank(productName), "product_name", productName);
queryWrapper.eq(StringUtils.isNotBlank(productLaunchBizId), "product_launch_biz_id", productLaunchBizId);
// queryWrapper.like(StringUtils.isNotBlank(reconciliationCompany), "reconciliation_company", reconciliationCompany);
queryWrapper.like(StringUtils.isNotBlank(broker), "broker", broker);
queryWrapper.like(StringUtils.isNotBlank(signer), "signer", signer);
queryWrapper.in(ObjectUtils.isNotEmpty(teamBizIdList), "team_biz_id", teamBizIdList);
queryWrapper.in(ObjectUtils.isNotEmpty(insuranceCompanyBizIdList), "insurance_company_biz_id", insuranceCompanyBizIdList);
queryWrapper.in(ObjectUtils.isNotEmpty(productLaunchBizIdList), "product_launch_biz_id", productLaunchBizIdList);
queryWrapper.in(ObjectUtils.isNotEmpty(brokerBizIdList), "broker_biz_id", brokerBizIdList);
queryWrapper.in(ObjectUtils.isNotEmpty(signerBizIdList), "signer_biz_id", signerBizIdList);
queryWrapper.eq(StringUtils.isNotBlank(fortuneBizType), "fortune_biz_type", fortuneBizType);
// 按id升序排序
......@@ -567,6 +562,15 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
@Override
public ExpectedFortuneStatisticsVO getStatistics(List<Long> expectedFortuneIds) {
if (CollectionUtils.isEmpty(expectedFortuneIds)) {
ExpectedFortuneStatisticsVO statisticsVO = new ExpectedFortuneStatisticsVO();
statisticsVO.setTotalExpectedAmount(BigDecimal.ZERO);
statisticsVO.setTotalPaidAmount(BigDecimal.ZERO);
statisticsVO.setTotalUnpaidAmount(BigDecimal.ZERO);
statisticsVO.setPaidAmountRatio("0.00%");
statisticsVO.setTotalPolicyCount(0);
return statisticsVO;
}
// 自定义统计数据
ExpectedFortuneStatisticsVO statisticsVO = iExpectedFortuneService.getStatistics(expectedFortuneIds);
......
......@@ -15,47 +15,41 @@ public class ApiExpectedFortunePageRequest extends PageDto {
@Schema(description = "保单号")
private String policyNo;
@Schema(description = "预估发佣开始日期")
@Schema(description = "预计出账日期开始")
private LocalDate payoutDateStart;
@Schema(description = "预估发佣结束日期")
@Schema(description = "预计出账日期结束")
private LocalDate payoutDateEnd;
@Schema(description = "出账状态, 可多选 0=待出账 1=可出帐 2=完成出账 3=部分出账 4=保留 5=已失效")
@Schema(description = "出账状态, 可多选 0=待出账 1=可出帐 2=完成出账 3=部分出账 4=保留 5=已失效 字典值: csf_expected_fortune_status")
private List<String> statusList;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
* 出账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "出账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer fortunePeriod;
@Schema(description = "出账项目")
private String fortuneName;
@Schema(description = "出账项目类型 1=销售佣金;等等 字典值: csf_fortune_type")
private String fortuneType;
@Schema(description = "出单团队名称")
private String team;
@Schema(description = "出单团队业务ID")
private String teamBizId;
@Schema(description = "出单团队业务ID列表")
private List<String> teamBizIdList;
@Schema(description = "保险公司")
private String insuranceCompany;
@Schema(description = "保险公司业务ID列表")
private List<String> insuranceCompanyBizIdList;
@Schema(description = "产品名称")
private String productName;
@Schema(description = "产品计划业务ID列表")
private List<String> productLaunchBizIdList;
@Schema(description = "产品计划:产品上架信息业务ID")
private String productLaunchBizId;
@Schema(description = "转介人业务ID列表")
private List<String> brokerBizIdList;
/**
* 转介人名称
*/
@Schema(description = "转介人名称")
private String broker;
@Schema(description = "签单员名称")
private String signer;
@Schema(description = "签单员业务ID列表")
private List<String> signerBizIdList;
@Schema(description = "应付款类型 R-关联保单应付款 U-非关联保单应付款")
private String fortuneBizType;
......
......@@ -43,10 +43,10 @@ public class CommissionExpectedQueryRequest extends PageDto {
private Integer commissionPeriod;
/**
* 入账项目(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
* 入账项目类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "入账项目(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionName;
@Schema(description = "入账项目类型(1:销售佣金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等 字典值: csf_commission_type)")
private String commissionType;
/**
* 对账公司业务ID列表
......
......@@ -149,6 +149,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
}
// 获取查询参数
String policyNo = commissionExpectedQueryRequest.getPolicyNo();
String commissionType = commissionExpectedQueryRequest.getCommissionType();
List<String> insurerCompanyBizIdList = commissionExpectedQueryRequest.getInsurerCompanyBizIdList();
List<String> reconciliationCompanyBizIdList = commissionExpectedQueryRequest.getReconciliationCompanyBizIdList();
List<String> statusList = commissionExpectedQueryRequest.getStatusList();
......@@ -160,6 +161,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
String teamBizId = commissionExpectedQueryRequest.getTeamBizId();
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(policyNo), "policy_no", policyNo);
queryWrapper.eq(ObjectUtils.isNotEmpty(commissionType), "commission_type", commissionType);
queryWrapper.in(ObjectUtils.isNotEmpty(insurerCompanyBizIdList), "insurance_company_biz_id", insurerCompanyBizIdList);
queryWrapper.in(ObjectUtils.isNotEmpty(reconciliationCompanyBizIdList), "reconciliation_company_biz_id", reconciliationCompanyBizIdList);
queryWrapper.eq(ObjectUtils.isNotEmpty(commissionPeriod), "commission_period", commissionPeriod);
......@@ -319,6 +321,15 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
@Override
public CommissionExpectedStatisticsVO getExpectedStatistics(List<Long> expectedIds) {
if (CollectionUtils.isEmpty(expectedIds)) {
CommissionExpectedStatisticsVO expectedStatisticsVO = new CommissionExpectedStatisticsVO();
expectedStatisticsVO.setTotalAmount(BigDecimal.ZERO);
expectedStatisticsVO.setTotalPaidAmount(BigDecimal.ZERO);
expectedStatisticsVO.setPendingPaidAmount(BigDecimal.ZERO);
expectedStatisticsVO.setPaidAmountRatio("0.00%");
expectedStatisticsVO.setTotalPolicyCount(0);
return expectedStatisticsVO;
}
// 自定义统计数据
CommissionExpectedStatisticsVO commissionStatistics = baseMapper.getExpectedStatistics(expectedIds);
......
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.yd.csf.service.model.CommissionExpected;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ContentRowHeight(15)
@HeadRowHeight(20)
@ColumnWidth(15)
public class CommissionExpectedExportDTO {
@ExcelProperty("应收账款编号")
@ColumnWidth(20)
private String receivableNo;
@ExcelProperty("应收款类型")
private String commissionBizType;
@ExcelProperty("保单号")
@ColumnWidth(20)
private String policyNo;
@ExcelProperty("对账公司")
@ColumnWidth(20)
private String reconciliationCompany;
@ExcelProperty("佣金期数")
private Integer commissionPeriod;
@ExcelProperty("总来佣期数")
private Integer totalPeriod;
@ExcelProperty("来佣名称")
@ColumnWidth(20)
private String commissionName;
@ExcelProperty("来佣类型")
private String commissionType;
@ExcelProperty("预计入账比例(%)")
private BigDecimal commissionRatio;
@ExcelProperty("来佣币种")
private String currency;
@ExcelProperty("预计来佣日期")
@DateTimeFormat("yyyy-MM-dd")
@ColumnWidth(15)
private Date commissionDate;
@ExcelProperty("入账状态")
private String status;
@ExcelProperty("预计入账金额(HKD)")
@ColumnWidth(20)
private BigDecimal expectedAmount;
@ExcelProperty("已入账金额(HKD)")
@ColumnWidth(20)
private BigDecimal paidAmount;
@ExcelProperty("待入账金额(HKD)")
@ColumnWidth(20)
private BigDecimal pendingAmount;
@ExcelProperty("备注")
@ColumnWidth(30)
private String remark;
@ExcelProperty("创建时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ColumnWidth(20)
private Date createTime;
@ExcelProperty("更新时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ColumnWidth(20)
private Date updateTime;
/**
* 将对象转换为导出DTO
*/
public static CommissionExpectedExportDTO convertToExportDTO(CommissionExpected vo) {
CommissionExpectedExportDTO dto = new CommissionExpectedExportDTO();
dto.setReceivableNo(vo.getReceivableNo());
dto.setCommissionBizType(vo.getCommissionBizType());
dto.setPolicyNo(vo.getPolicyNo());
dto.setReconciliationCompany(vo.getReconciliationCompany());
dto.setCommissionPeriod(vo.getCommissionPeriod());
dto.setTotalPeriod(vo.getTotalPeriod());
dto.setCommissionName(vo.getCommissionName());
dto.setCommissionType(vo.getCommissionType());
dto.setCommissionRatio(vo.getCommissionRatio());
dto.setCurrency(vo.getCurrency());
dto.setCommissionDate(vo.getCommissionDate());
dto.setStatus(getStatusText(vo.getStatus()));
dto.setExpectedAmount(vo.getExpectedAmount());
dto.setPaidAmount(vo.getPaidAmount());
// 计算待入账金额
BigDecimal pendingAmount = vo.getExpectedAmount() != null && vo.getPaidAmount() != null
? vo.getExpectedAmount().subtract(vo.getPaidAmount())
: BigDecimal.ZERO;
dto.setPendingAmount(pendingAmount);
dto.setRemark(vo.getRemark());
dto.setCreateTime(vo.getCreateTime());
dto.setUpdateTime(vo.getUpdateTime());
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