Commit 32b93dba by jianan

新单跟进149

parent 5b3b159d
...@@ -10,15 +10,20 @@ import com.yd.csf.api.service.ApiExpectedFortuneService; ...@@ -10,15 +10,20 @@ import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient; import com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest; import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest; import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.request.expectedfortune.ExpectedFortuneStatisticsRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse; import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse; import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
/** /**
* 预计发佣信息 * 预计发佣信息
* *
...@@ -27,6 +32,7 @@ import javax.validation.constraints.NotBlank; ...@@ -27,6 +32,7 @@ import javax.validation.constraints.NotBlank;
*/ */
@RestController @RestController
@RequestMapping("/expectedFortune") @RequestMapping("/expectedFortune")
@Tag(name = "预计发佣接口")
@Validated @Validated
public class ApiExpectedFortuneController implements ApiExpectedFortuneFeignClient { public class ApiExpectedFortuneController implements ApiExpectedFortuneFeignClient {
...@@ -69,16 +75,29 @@ public class ApiExpectedFortuneController implements ApiExpectedFortuneFeignClie ...@@ -69,16 +75,29 @@ public class ApiExpectedFortuneController implements ApiExpectedFortuneFeignClie
} }
/** /**
* 分页查询 - 预计发佣 * 分页查询 - 应付款管理列表(预计发佣列表)
* @param request * @param request
* @return * @return
*/ */
@Override @Override
@Operation(summary = "分页查询 - 应付款管理列表(预计发佣列表)")
public Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request) { public Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request) {
return apiExpectedFortuneService.page(request); return apiExpectedFortuneService.page(request);
} }
/** /**
* 计算统计数据 预计发佣金额 HKD、已出账金额 HKD、待出账金额 HKD、总保单数、总保费 HKD
*/
@PostMapping("/statistics")
@Operation(summary = "计算统计数据 预计发佣金额 HKD、已出账金额 HKD、待出账金额 HKD、总保单数、总保费 HKD")
public Result<ExpectedFortuneStatisticsVO> getStatistics(@RequestBody ExpectedFortuneStatisticsRequest commissionExpectedStatisticsRequest) {
if (commissionExpectedStatisticsRequest == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
return Result.success(apiExpectedFortuneService.getStatistics(commissionExpectedStatisticsRequest.getExpectedFortuneIds()));
}
/**
* 查询保单是否生成过预计发佣 * 查询保单是否生成过预计发佣
* @param policyNo * @param policyNo
* @return * @return
......
...@@ -8,6 +8,7 @@ import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse; ...@@ -8,6 +8,7 @@ import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse; import com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse;
import com.yd.csf.service.dto.QueryPolicyAndBrokerDto; import com.yd.csf.service.dto.QueryPolicyAndBrokerDto;
import com.yd.csf.service.model.CommissionRuleBinding; import com.yd.csf.service.model.CommissionRuleBinding;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import java.util.List; import java.util.List;
...@@ -25,4 +26,6 @@ public interface ApiExpectedFortuneService { ...@@ -25,4 +26,6 @@ public interface ApiExpectedFortuneService {
Result<Boolean> isGenerate(String policyNo); Result<Boolean> isGenerate(String policyNo);
Result batchDelByPolicyNo(String policyNo); Result batchDelByPolicyNo(String policyNo);
ExpectedFortuneStatisticsVO getStatistics(List<Long> expectedFortuneIds);
} }
package com.yd.csf.api.service.impl; package com.yd.csf.api.service.impl;
import cn.hutool.core.date.DateField; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil; 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.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.constant.RedisConstants; import com.yd.common.constant.RedisConstants;
...@@ -31,24 +31,25 @@ import com.yd.csf.service.service.ICommissionRuleBindingService; ...@@ -31,24 +31,25 @@ import com.yd.csf.service.service.ICommissionRuleBindingService;
import com.yd.csf.service.service.IExpectedFortuneService; import com.yd.csf.service.service.IExpectedFortuneService;
import com.yd.csf.service.service.PolicyBrokerService; import com.yd.csf.service.service.PolicyBrokerService;
import com.yd.csf.service.service.PolicyService; import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import com.yd.user.feign.client.clientuser.ApiClientUserFeignClient; import com.yd.user.feign.client.clientuser.ApiClientUserFeignClient;
import jodd.util.StringUtil; import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -416,9 +417,57 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -416,9 +417,57 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
*/ */
@Override @Override
public Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request) { public Result<IPage<ApiExpectedFortunePageResponse>> page(ApiExpectedFortunePageRequest request) {
Page<ApiExpectedFortunePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize()); Page<ExpectedFortune> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiExpectedFortunePageResponse> iPage = iExpectedFortuneService.page(page, request); IPage<ExpectedFortune> iPage = iExpectedFortuneService.page(page, this.getQueryWrapper(request));
return Result.success(iPage); // 转换为ApiExpectedFortunePageResponse
IPage<ApiExpectedFortunePageResponse> apiPage = iPage.convert(ApiExpectedFortuneServiceImpl::transform);
return Result.success(apiPage);
}
public static ApiExpectedFortunePageResponse transform(ExpectedFortune expectedFortune) {
ApiExpectedFortunePageResponse response = new ApiExpectedFortunePageResponse();
BeanUtil.copyProperties(expectedFortune, response);
return response;
}
public QueryWrapper<ExpectedFortune> getQueryWrapper(ApiExpectedFortunePageRequest request) {
QueryWrapper<ExpectedFortune> queryWrapper = new QueryWrapper<>();
if (request == null) {
return queryWrapper;
}
// 获取参数
String policyNo = request.getPolicyNo();
LocalDate payoutDateStart = request.getPayoutDateStart();
LocalDate payoutDateEnd = request.getPayoutDateEnd();
String status = request.getStatus();
Integer fortunePeriod = request.getFortunePeriod();
String fortuneName = request.getFortuneName();
String team = request.getTeam();
String insuranceCompany = request.getInsuranceCompany();
String productName = request.getProductName();
// String reconciliationCompany = request.getReconciliationCompany();
String broker = request.getBroker();
String signer = request.getSigner();
// 按保单号模糊查询
queryWrapper.like(StringUtils.isNotBlank(policyNo), "policy_no", policyNo);
queryWrapper.gt(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart);
queryWrapper.lt(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd);
queryWrapper.eq(ObjectUtils.isNotEmpty(status), "status", status);
queryWrapper.eq(ObjectUtils.isNotEmpty(fortunePeriod), "fortune_period", fortunePeriod);
queryWrapper.like(StringUtils.isNotBlank(fortuneName), "fortune_name", fortuneName);
queryWrapper.like(StringUtils.isNotBlank(team), "team", team);
queryWrapper.like(StringUtils.isNotBlank(insuranceCompany), "insurance_company", insuranceCompany);
queryWrapper.like(StringUtils.isNotBlank(productName), "product_name", productName);
// queryWrapper.like(StringUtils.isNotBlank(reconciliationCompany), "reconciliation_company", reconciliationCompany);
queryWrapper.like(StringUtils.isNotBlank(broker), "broker", broker);
queryWrapper.like(StringUtils.isNotBlank(signer), "signer", signer);
// 按id升序排序
queryWrapper.orderByAsc("id");
return queryWrapper;
} }
/** /**
...@@ -445,4 +494,24 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -445,4 +494,24 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
iExpectedFortuneService.batchDelByPolicyNo(policyNo); iExpectedFortuneService.batchDelByPolicyNo(policyNo);
return Result.success(); return Result.success();
} }
@Override
public ExpectedFortuneStatisticsVO getStatistics(List<Long> expectedFortuneIds) {
// 自定义统计数据
ExpectedFortuneStatisticsVO statisticsVO = iExpectedFortuneService.getStatistics(expectedFortuneIds);
BigDecimal totalAmount = statisticsVO.getTotalExpectedAmount();
BigDecimal totalPaidAmount = statisticsVO.getTotalPaidAmount();
// 计算待出账金额
statisticsVO.setTotalUnpaidAmount(totalAmount.subtract(totalPaidAmount));
// 计算已出账比例(已出账金额/预计发佣金额)
BigDecimal divided = BigDecimal.ZERO;
if (totalAmount.compareTo(BigDecimal.ZERO) > 0) {
divided = totalPaidAmount.divide(totalAmount, 4, RoundingMode.HALF_UP);
}
// 格式化 %
statisticsVO.setPaidAmountRatio(String.format("%.2f%%", divided.doubleValue() * 100));
return statisticsVO;
}
} }
package com.yd.csf.feign.request.expectedfortune; package com.yd.csf.feign.request.expectedfortune;
import com.yd.common.dto.PageDto; import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDate;
@Data @Data
public class ApiExpectedFortunePageRequest extends PageDto { public class ApiExpectedFortunePageRequest extends PageDto {
/** /**
* 保单号 * 保单号
*/ */
@Schema(description = "保单号")
private String policyNo; private String policyNo;
@Schema(description = "预估发佣开始日期")
private LocalDate payoutDateStart;
@Schema(description = "预估发佣结束日期")
private LocalDate payoutDateEnd;
@Schema(description = "发佣状态 0=待出账 1=可出帐 2=完成出账 3=部分出账 4=保留 5=已失效")
private String status;
/** /**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年) * 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/ */
@Schema(description = "发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer fortunePeriod; private Integer fortunePeriod;
@Schema(description = "发佣名称")
private String fortuneName;
@Schema(description = "出单团队")
private String team;
@Schema(description = "保险公司")
private String insuranceCompany;
@Schema(description = "产品名称")
private String productName;
/** /**
* 转介人名称 * 转介人名称
*/ */
@Schema(description = "转介人名称")
private String broker; private String broker;
@Schema(description = "签单员名称")
private String signer;
} }
package com.yd.csf.feign.request.expectedfortune;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class ExpectedFortuneStatisticsRequest {
/**
* expected fortune id 列表
*/
@Schema(description = "expected fortune id 列表")
private List<Long> expectedFortuneIds;
}
package com.yd.csf.feign.response.expectedfortune; package com.yd.csf.feign.response.expectedfortune;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
...@@ -11,86 +12,121 @@ public class ApiExpectedFortunePageResponse { ...@@ -11,86 +12,121 @@ public class ApiExpectedFortunePageResponse {
/** /**
* 主键ID * 主键ID
*/ */
@Schema(description = "expected fortune id")
private Long id; private Long id;
/** /**
* 预计发佣表唯一业务id * 预计发佣表唯一业务id
*/ */
@Schema(description = "expected fortune biz id")
private String expectedFortuneBizId; private String expectedFortuneBizId;
/** /**
* 保单号 * 保单号
*/ */
@Schema(description = "policy no")
private String policyNo; private String policyNo;
/** /**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年) * 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/ */
@Schema(description = "fortune period")
private Integer fortunePeriod; private Integer fortunePeriod;
/** /**
* 发佣总期数 * 发佣总期数
*/ */
@Schema(description = "fortune total period")
private Integer fortuneTotalPeriod; private Integer fortuneTotalPeriod;
/** /**
* 转介人名称 * 转介人名称
*/ */
@Schema(description = "转介人名称")
private String broker; private String broker;
/** /**
* 转介人业务ID * 转介人业务ID
*/ */
@Schema(description = "broker biz id")
private String brokerBizId; private String brokerBizId;
/** /**
* 团队名称 * 团队名称
*/ */
@Schema(description = "团队名称")
private String team; private String team;
/** /**
* 所属团队业务ID * 所属团队业务ID
*/ */
@Schema(description = "所属团队 biz id")
private String teamBizId; private String teamBizId;
/** /**
* 发佣名称 * 发佣名称
*/ */
@Schema(description = "发佣名称")
private String fortuneName; private String fortuneName;
/** /**
* 发佣类型 * 发佣类型
*/ */
@Schema(description = "发佣类型")
private String fortuneType; private String fortuneType;
/** /**
* 发佣金额 * 预计应发金额
*/ */
@Schema(description = "预计应发金额")
private BigDecimal amount; private BigDecimal amount;
/** /**
* 发佣币种 * 发佣币种
*/ */
@Schema(description = "发佣币种")
private String currency; private String currency;
/** /**
* 发佣状态 0=待出账 1=可出帐 2=完成出账 3=部分出账 4=保留 5=已失效 * 发佣状态 0=待出账 1=可出帐 2=完成出账 3=部分出账 4=保留 5=已失效
*/ */
@Schema(description = "发佣状态 0=待出账 1=可出帐 2=完成出账 3=部分出账 4=保留 5=已失效")
private String status; private String status;
/** /**
* 预计发佣日期 * 预计发佣日期
*/ */
@Schema(description = "预计发佣日期")
private LocalDate payoutDate; private LocalDate payoutDate;
/** /**
* 已出账金额
*/
@Schema(description = "已出账金额")
private BigDecimal paidAmount;
/**
* 待出账金额
*/
@Schema(description = "待出账金额")
private BigDecimal unPaidAmount;
/**
* 发佣比例 已发佣金额/应发佣金额
*/
@Schema(description = "发佣比例 已发佣金额/应发佣金额")
private BigDecimal paidRatio;
/**
* 基本法项目配置表唯一业务ID * 基本法项目配置表唯一业务ID
*/ */
@Schema(description = "rule item biz id")
private String ruleItemBizId; private String ruleItemBizId;
/** /**
* 创建时间 * 创建时间
*/ */
@Schema(description = "create time")
private LocalDateTime createTime; private LocalDateTime createTime;
} }
...@@ -6,6 +6,7 @@ import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest; ...@@ -6,6 +6,7 @@ import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse; import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.model.ExpectedFortune;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -24,4 +25,6 @@ public interface ExpectedFortuneMapper extends BaseMapper<ExpectedFortune> { ...@@ -24,4 +25,6 @@ public interface ExpectedFortuneMapper extends BaseMapper<ExpectedFortune> {
@Param("request") ApiExpectedFortunePageRequest request); @Param("request") ApiExpectedFortunePageRequest request);
List<ExpectedFortune> listByPolicyBizId(@Param("policyBizId") String policyBizId); List<ExpectedFortune> listByPolicyBizId(@Param("policyBizId") String policyBizId);
ExpectedFortuneStatisticsVO getStatistics(@Param("expectedFortuneIds") List<Long> expectedFortuneIds);
} }
...@@ -128,6 +128,24 @@ public class ExpectedFortune implements Serializable { ...@@ -128,6 +128,24 @@ public class ExpectedFortune implements Serializable {
@TableField("payout_date") @TableField("payout_date")
private LocalDate payoutDate; private LocalDate payoutDate;
/**
* 已出账金额
*/
@TableField("paid_amount")
private BigDecimal paidAmount;
/**
* 待出账金额
*/
@TableField("un_paid_amount")
private BigDecimal unPaidAmount;
/**
* 发佣比例 已发佣金额/应发佣金额
*/
@TableField("paid_ratio")
private BigDecimal paidRatio;
/** /**
* 是否含税 0=No, 1=Yes * 是否含税 0=No, 1=Yes
*/ */
......
...@@ -6,6 +6,7 @@ import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest; ...@@ -6,6 +6,7 @@ import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse; import com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse;
import com.yd.csf.service.model.ExpectedFortune; import com.yd.csf.service.model.ExpectedFortune;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import java.util.List; import java.util.List;
...@@ -27,4 +28,6 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> { ...@@ -27,4 +28,6 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> {
List<ExpectedFortune> queryList(String policyNo); List<ExpectedFortune> queryList(String policyNo);
Boolean batchDelByPolicyNo(String policyNo); Boolean batchDelByPolicyNo(String policyNo);
ExpectedFortuneStatisticsVO getStatistics(List<Long> expectedFortuneIds);
} }
...@@ -9,6 +9,7 @@ import com.yd.csf.service.model.ExpectedFortune; ...@@ -9,6 +9,7 @@ import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.dao.ExpectedFortuneMapper; import com.yd.csf.service.dao.ExpectedFortuneMapper;
import com.yd.csf.service.service.IExpectedFortuneService; import com.yd.csf.service.service.IExpectedFortuneService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -51,4 +52,9 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe ...@@ -51,4 +52,9 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
public Boolean batchDelByPolicyNo(String policyNo) { public Boolean batchDelByPolicyNo(String policyNo) {
return this.remove(new LambdaQueryWrapper<ExpectedFortune>().eq(ExpectedFortune::getPolicyNo,policyNo)); return this.remove(new LambdaQueryWrapper<ExpectedFortune>().eq(ExpectedFortune::getPolicyNo,policyNo));
} }
@Override
public ExpectedFortuneStatisticsVO getStatistics(List<Long> expectedFortuneIds) {
return baseMapper.getStatistics(expectedFortuneIds);
}
} }
package com.yd.csf.service.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
/**
* 预计发佣统计VO 预计发佣金额 HKD、已出账金额 HKD、待出账金额 HKD、总保单数、总保费 HKD
*/
@Data
public class ExpectedFortuneStatisticsVO {
/**
* 预计发佣金额 HKD
*/
@Schema(description = "预计发佣金额 HKD")
private BigDecimal totalExpectedAmount;
/**
* 已出账金额 HKD
*/
@Schema(description = "已出账金额 HKD")
private BigDecimal totalPaidAmount;
/**
* 待出账金额 HKD
*/
@Schema(description = "待出账金额 HKD")
private BigDecimal totalUnpaidAmount;
/**
* 已出账比例(已出账金额/预计发佣金额)
*/
@Schema(description = "已出账比例(已出账金额/预计发佣金额)")
private String paidAmountRatio;
/**
* 总保单数
*/
@Schema(description = "总保单数")
private Integer totalPolicyCount;
/**
* 总保费 HKD
*/
@Schema(description = "总保费 HKD")
private BigDecimal totalPremiumAmount;
}
...@@ -23,4 +23,27 @@ ...@@ -23,4 +23,27 @@
from expected_fortune ef from expected_fortune ef
where ef.policy_no = (select policy_no from policy where policy_biz_id = #{policyBizId}) where ef.policy_no = (select policy_no from policy where policy_biz_id = #{policyBizId})
</select> </select>
<select id="getStatistics" resultType="com.yd.csf.service.vo.ExpectedFortuneStatisticsVO">
select
ifnull(sum(ef.amount),0) as totalExpectedAmount,
ifnull(sum(ef.paid_amount),0) as totalPaidAmount,
ifnull(sum(ef.unpaid_amount),0) as totalUnpaidAmount,
ifnull(e.totalPremiumAmount,0) as totalPremiumAmount,
count(distinct ef.policy_no) as totalPolicyCount
from expected_fortune ef
LEFT JOIN (
SELECT p.policy_no, SUM(p.payment_premium*p.payment_term) as totalPremiumAmount
FROM policy p
GROUP BY policy_no
) e ON ef.policy_no = e.policy_no
<where>
<if test="expectedFortuneIds != null and expectedFortuneIds.size > 0">
ef.id in
<foreach collection="expectedFortuneIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</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