Commit a051f0df by jianan

前端对接问题修复39

parent 10cff95c
......@@ -10,7 +10,7 @@ import java.util.Date;
import lombok.Data;
/**
* 保单发佣
* 保单出账
*
* @TableName fortune
*/
......@@ -24,7 +24,7 @@ public class Fortune implements Serializable {
private Long id;
/**
* 预计发佣业务ID
* 预计出账业务ID
*/
private String expectedFortuneBizId;
......@@ -44,12 +44,12 @@ public class Fortune implements Serializable {
private Integer isPart;
/**
* 保单发佣批次ID
* 保单出账批次ID
*/
private String batchBizId;
/**
* 保单发佣业务id
* 保单出账业务id
*/
private String fortuneBizId;
......@@ -64,12 +64,12 @@ public class Fortune implements Serializable {
private String policyNo;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
* 出账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private Integer fortunePeriod;
/**
* 发佣总期数
* 出账总期数
*/
private Integer fortuneTotalPeriod;
......@@ -109,17 +109,17 @@ public class Fortune implements Serializable {
private String fortuneName;
/**
* 发佣类型
* 出账类型
*/
private String fortuneType;
/**
* 发佣金额
* 出账金额
*/
private BigDecimal amount;
/**
* 发佣币种
* 出账币种
*/
private String currency;
......@@ -134,7 +134,7 @@ public class Fortune implements Serializable {
private String status;
/**
* 发佣日期
* 出账日期
*/
private LocalDate payoutDate;
......@@ -154,7 +154,7 @@ public class Fortune implements Serializable {
private BigDecimal taxAmount;
/**
* 税后发佣
* 税后出账
*/
private BigDecimal netAmount;
......
......@@ -16,15 +16,9 @@ import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.service.CommissionService;
import com.yd.csf.service.service.FortuneAccountService;
import com.yd.csf.service.service.FortuneService;
import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.FortuneMapper;
import com.yd.csf.service.service.IExpectedFortuneService;
import com.yd.csf.service.vo.CommissionVO;
import com.yd.csf.service.vo.FortuneVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
......@@ -34,7 +28,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
......@@ -56,12 +49,15 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
@Resource
private FortuneAccountService fortuneAccountService;
@Resource
private CommissionService commissionService;
@Resource
private CommissionExpectedService commissionExpectedService;
@Resource
private IExpectedFortuneService expectedFortuneService;
@Resource
private PolicyService policyService;
@Override
public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) {
......@@ -98,14 +94,56 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return fortuneVOPage;
}
List<FortuneVO> fortuneVOList = fortuneList.stream().map(FortuneVO::objToVo).collect(Collectors.toList());
// 关联查询已来佣金额
List<Commission> commissionList = commissionService.list(new QueryWrapper<Commission>().in("commission_biz_id", fortuneList.stream().map(Fortune::getCommissionBizId).collect(Collectors.toList())));
Map<String, Commission> commissionMap = commissionList.stream().collect(Collectors.toMap(Commission::getCommissionBizId, commission -> commission));
List<FortuneVO> fortuneVOList = new ArrayList<>();
Set<String> expectedFortuneBizIdSet = new HashSet<>();
Set<String> commissionBizIdSet = new HashSet<>();
Set<String> policyNoSet = new HashSet<>();
for (Fortune fortune : fortuneList) {
FortuneVO fortuneVO = FortuneVO.objToVo(fortune);
fortuneVOList.add(fortuneVO);
expectedFortuneBizIdSet.add(fortune.getExpectedFortuneBizId());
commissionBizIdSet.add(fortune.getCommissionBizId());
policyNoSet.add(fortune.getPolicyNo());
}
// 1.关联查询来佣信息
List<Commission> commissionList = commissionService.list(new QueryWrapper<Commission>().in("commission_biz_id", commissionBizIdSet));
// 1.1 关联查询来佣预期信息
List<CommissionExpected> commissionExpectedList = commissionExpectedService.lambdaQuery()
.in(CommissionExpected::getCommissionExpectedBizId, expectedFortuneBizIdSet)
.select(CommissionExpected::getCommissionExpectedBizId, CommissionExpected::getPaidAmount, CommissionExpected::getPaidRatio)
.list();
Map<String, CommissionExpected> commissionExpectedMap = commissionExpectedList.stream().collect(Collectors.toMap(CommissionExpected::getCommissionExpectedBizId, a -> a, (oldValue, newValue) -> newValue));
// 2.关联查询保单信息
QueryWrapper<Policy> queryWrapper = new QueryWrapper<Policy>();
queryWrapper.select("policy_no", "payment_premium", "product_name", "insurance_company", "reconciliation_company");
queryWrapper.in("policy_no", policyNoSet);
List<Policy> policyList = policyService.list(queryWrapper);
Map<String, Policy> policyMap = policyList.stream().collect(Collectors.toMap(Policy::getPolicyNo, a -> a, (oldValue, newValue) -> newValue));
// 3.关联查询预计出账信息
List<ExpectedFortune> expectedFortuneList = expectedFortuneService.list(new QueryWrapper<ExpectedFortune>().in("expected_fortune_biz_id", expectedFortuneBizIdSet));
Map<String, ExpectedFortune> expectedFortuneMap = expectedFortuneList.stream().collect(Collectors.toMap(ExpectedFortune::getExpectedFortuneBizId, a -> a, (oldValue, newValue) -> newValue));
fortuneVOList.forEach(fortuneVO -> {
String commissionBizId = fortuneVO.getCommissionBizId();
// fortuneVO.setCommissionAmount(commissionAmountMap.getOrDefault(commissionBizId, BigDecimal.ZERO));
fortuneVO.setCommission(CommissionVO.objToVo(commissionMap.get(commissionBizId)));
// 设置来佣金额和比例
CommissionExpected commissionExpected = commissionExpectedMap.get(commissionBizId);
if (commissionExpected != null) {
fortuneVO.setCommissionPaidAmount(commissionExpected.getPaidAmount());
fortuneVO.setCommissionPaidRatio(commissionExpected.getPaidRatio());
}
// 设置保单信息
Policy policy = policyMap.get(fortuneVO.getPolicyNo());
if (policy != null) {
fortuneVO.setPremium(policy.getPaymentPremium());
fortuneVO.setInsuranceCompany(policy.getInsuranceCompany());
}
// 设置预计出账信息
ExpectedFortune expectedFortune = expectedFortuneMap.get(fortuneVO.getExpectedFortuneBizId());
if (expectedFortune != null) {
FortuneVO.calculateByExpectedFortune(fortuneVO, expectedFortune);
}
});
fortuneVOPage.setRecords(fortuneVOList);
......
package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.ExpectedFortune;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.model.FortuneAccount;
import io.swagger.v3.oas.annotations.media.Schema;
......@@ -9,6 +10,7 @@ import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
@Data
......@@ -21,9 +23,9 @@ public class FortuneVO implements Serializable {
private Long id;
/**
* 保单发佣业务id
* 保单出账业务id
*/
@Schema(description = "保单发佣业务id")
@Schema(description = "保单出账业务id")
private String fortuneBizId;
/**
......@@ -39,22 +41,46 @@ public class FortuneVO implements Serializable {
private String fortuneBizType;
/**
* 预计出账业务ID
*/
@Schema(description = "预计出账业务ID")
private String expectedFortuneBizId;
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 期交保费
*/
@Schema(description = "期交保费")
private BigDecimal premium;
/**
* 保险公司
*/
@Schema(description = "保险公司")
private String insuranceCompany;
/**
* 来佣业务id
*/
@Schema(description = "来佣业务id")
private String commissionBizId;
/**
* 关联来佣信息
* 已入账来佣金额(HKD)
*/
@Schema(description = "已入账来佣金额(HKD)")
private BigDecimal commissionPaidAmount;
/**
* 已入账来佣比例 (%)
*/
@Schema(description = "关联来佣信息")
private CommissionVO commission;
@Schema(description = "已入账来佣比例 (%)")
private BigDecimal commissionPaidRatio;
/**
* 本次已来佣金额
......@@ -63,15 +89,15 @@ public class FortuneVO implements Serializable {
// private Object commissionAmount;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
* 出账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
@Schema(description = "出账期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer fortunePeriod;
/**
* 发佣总期数
* 出账总期数
*/
@Schema(description = "发佣总期数")
@Schema(description = "出账总期数")
private Integer fortuneTotalPeriod;
/**
......@@ -99,39 +125,63 @@ public class FortuneVO implements Serializable {
private String teamBizId;
/**
* 发佣名称
* 出账名称
*/
@Schema(description = "发佣名称")
@Schema(description = "出账名称")
private String fortuneName;
/**
* 发佣类型
* 出账类型
*/
@Schema(description = "发佣类型")
@Schema(description = "出账类型")
private String fortuneType;
/**
* 发佣金额
* 出账金额
*/
@Schema(description = "发佣金额")
@Schema(description = "应出账金额")
private BigDecimal amount;
/**
* 发佣币种
* 出账币种
*/
@Schema(description = "发佣币种")
@Schema(description = "出账币种")
private String currency;
/**
* 佣金状态 0=待出账 1=可出账 2=已出账
* 已出账金额
*/
@Schema(description = "已出账金额")
private BigDecimal fortunePaidAmount;
/**
* 待出账金额
*/
@Schema(description = "佣金状态 0=待出账 1=可出账 2=已出账 字典值:csf_fortune_status")
@Schema(description = "剩余出账金额")
private BigDecimal fortuneUnpaidAmount;
/**
* 本期出账金额
*/
@Schema(description = "本期出账金额")
private BigDecimal currentPaymentAmount;
/**
* 剩余出账比例 剩余出账金额/应出账金额
*/
@Schema(description = "剩余出账比例 剩余出账金额/应出账金额")
private BigDecimal fortuneUnpaidRatio;
/**
* 出账状态 0=待出账 1=可出账,待检核 2=已出账 3=部分出账 4=保留 5=已失效 6=可出账,检核完成
*/
@Schema(description = "出账状态 字典值:csf_fortune_status")
private String status;
/**
* 发佣日期
* 出账日(实)
*/
@Schema(description = "发佣日期")
@Schema(description = "出账日(实)")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date payoutDate;
......@@ -148,9 +198,9 @@ public class FortuneVO implements Serializable {
private BigDecimal taxAmount;
/**
* 税后发佣
* 税后出账
*/
@Schema(description = "税后发佣")
@Schema(description = "税后出账")
private BigDecimal netAmount;
/**
......@@ -226,4 +276,19 @@ public class FortuneVO implements Serializable {
return fortuneVO;
}
public static void calculateByExpectedFortune(FortuneVO fortuneVO, ExpectedFortune expectedFortune) {
BigDecimal amount = expectedFortune.getAmount();
BigDecimal paidAmount = expectedFortune.getPaidAmount();
if (amount != null && paidAmount != null) {
fortuneVO.setAmount(amount);
fortuneVO.setFortunePaidAmount(paidAmount);
BigDecimal unpaidAmount = amount.subtract(paidAmount);
fortuneVO.setFortuneUnpaidAmount(unpaidAmount);
fortuneVO.setFortuneUnpaidRatio(unpaidAmount.divide(amount, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
}
}
}
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