Commit ceaec495 by jianan

新单跟进74

parent 9975dcd1
...@@ -14,6 +14,7 @@ import com.yd.csf.service.model.Commission; ...@@ -14,6 +14,7 @@ import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionExpected; import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.service.CommissionExpectedService; import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.service.CommissionService; import com.yd.csf.service.service.CommissionService;
import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
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;
...@@ -247,6 +248,19 @@ public class ApiCommissionController { ...@@ -247,6 +248,19 @@ public class ApiCommissionController {
} }
/** /**
* 计算统计数据 总金额、总入账金额、待入账金额、已入账比例(已入账金额/总金额)、总保单数
*/
@PostMapping("/statistics")
@Operation(summary = "计算统计数据 总金额、总入账金额、待入账金额、已入账比例(已入账金额/总金额)、总保单数")
public Result<CommissionStatisticsVO> getCommissionStatistics(@RequestBody CommissionStatisticsRequest commissionStatisticsRequest) {
if (commissionStatisticsRequest == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
return Result.success(commissionService.getCommissionStatistics(commissionStatisticsRequest));
}
/**
* 根据 commissionBizId 获取保单来佣(封装类) * 根据 commissionBizId 获取保单来佣(封装类)
* *
* @param commissionBizId * @param commissionBizId
......
...@@ -263,6 +263,8 @@ public class ApiPolicyFollowController { ...@@ -263,6 +263,8 @@ public class ApiPolicyFollowController {
if (policyFollow.getEffectiveDate()!= null && policyFollow.getCoolingOffDays() != null) { if (policyFollow.getEffectiveDate()!= null && policyFollow.getCoolingOffDays() != null) {
policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollow.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollow.getCoolingOffDays())); policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollow.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollow.getCoolingOffDays()));
} }
// 获取币种字典值
policyFollow.setCurrency(policyFollowService.getCurrencyValue(policyExcelDTO.getCurrency()));
// 转换为Policy对象 // 转换为Policy对象
Policy policy = new Policy(); Policy policy = new Policy();
......
...@@ -64,6 +64,12 @@ public class CommissionAddRequest implements Serializable { ...@@ -64,6 +64,12 @@ public class CommissionAddRequest implements Serializable {
private String currency; private String currency;
/** /**
* 结算汇率
*/
@Schema(description = "结算汇率")
private String exchangeRate;
/**
* 来佣日期 * 来佣日期
*/ */
@Schema(description = "来佣日期", requiredMode = Schema.RequiredMode.REQUIRED, format = "yyyy-MM-dd") @Schema(description = "来佣日期", requiredMode = Schema.RequiredMode.REQUIRED, format = "yyyy-MM-dd")
......
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class CommissionStatisticsRequest {
/**
* 佣金ID列表
*/
@Schema(description = "佣金ID列表")
private List<Long> commissionIds;
}
...@@ -75,6 +75,12 @@ public class CommissionUpdateRequest implements Serializable { ...@@ -75,6 +75,12 @@ public class CommissionUpdateRequest implements Serializable {
@Schema(description = "来佣币种") @Schema(description = "来佣币种")
private String currency; private String currency;
/**
* 结算汇率
*/
@Schema(description = "结算汇率")
private String exchangeRate;
/** /**
* 来佣日期 * 来佣日期
*/ */
......
...@@ -7,6 +7,7 @@ import com.yd.csf.service.dto.*; ...@@ -7,6 +7,7 @@ import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.Commission; import com.yd.csf.service.model.Commission;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.model.CommissionExpected; import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import java.util.List; import java.util.List;
...@@ -36,4 +37,6 @@ public interface CommissionService extends IService<Commission> { ...@@ -36,4 +37,6 @@ public interface CommissionService extends IService<Commission> {
List<Commission> queryList(CommissionDto dto); List<Commission> queryList(CommissionDto dto);
List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(CommissionDto dto); List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(CommissionDto dto);
CommissionStatisticsVO getCommissionStatistics(CommissionStatisticsRequest commissionStatisticsRequest);
} }
...@@ -42,4 +42,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> { ...@@ -42,4 +42,6 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
PolicyFollowAggregateDto getPolicyFollowAggregate(String policyBizId); PolicyFollowAggregateDto getPolicyFollowAggregate(String policyBizId);
Page<PolicyFollowDetailVO> getPolicyFollowDetailVOList(Page<PolicyFollow> policyFollowPage); Page<PolicyFollowDetailVO> getPolicyFollowDetailVOList(Page<PolicyFollow> policyFollowPage);
String getCurrencyValue(String currency);
} }
...@@ -18,6 +18,7 @@ import com.yd.csf.service.enums.FortuneStatusEnum; ...@@ -18,6 +18,7 @@ import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionMapper; import com.yd.csf.service.dao.CommissionMapper;
import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -26,6 +27,8 @@ import org.springframework.stereotype.Service; ...@@ -26,6 +27,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -283,6 +286,35 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -283,6 +286,35 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
public List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(CommissionDto dto) { public List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(CommissionDto dto) {
return baseMapper.queryCommissionBindPolicyBrokerList(dto); return baseMapper.queryCommissionBindPolicyBrokerList(dto);
} }
@Override
public CommissionStatisticsVO getCommissionStatistics(CommissionStatisticsRequest commissionStatisticsRequest) {
// 自定义统计数据
List<Commission> list = baseMapper.selectList(
new QueryWrapper<Commission>().in("id", commissionStatisticsRequest.getCommissionIds()));
// 统计数据
CommissionStatisticsVO vo = new CommissionStatisticsVO();
vo.setTotalAmount(BigDecimal.ZERO);
vo.setTotalPaidAmount(BigDecimal.ZERO);
vo.setPendingPaidAmount(BigDecimal.ZERO);
vo.setPaidAmountRatio(BigDecimal.ZERO);
vo.setTotalPolicyCount(0);
Set<String> policyNoSet = new HashSet<>();
for (Commission commission : list) {
// 统计来佣保单数量
policyNoSet.add(commission.getPolicyNo());
// 统计来佣总金额
vo.setTotalAmount(vo.getTotalAmount().add(commission.getAmount()));
// 统计已入账金额
vo.setTotalPaidAmount(vo.getTotalPaidAmount().add(commission.getAmount()));
}
vo.setTotalPolicyCount(policyNoSet.size());
if (vo.getTotalAmount().compareTo(BigDecimal.ZERO) > 0) {
vo.setPaidAmountRatio(vo.getTotalPaidAmount().divide(vo.getTotalAmount(), 4, RoundingMode.HALF_UP));
}
return vo;
}
} }
......
...@@ -157,6 +157,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -157,6 +157,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
if (policyFollowUpdateDto.getCoolingOffDays() != null && policyFollowUpdateDto.getEffectiveDate() != null) { if (policyFollowUpdateDto.getCoolingOffDays() != null && policyFollowUpdateDto.getEffectiveDate() != null) {
policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollowUpdateDto.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollowUpdateDto.getCoolingOffDays())); policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollowUpdateDto.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollowUpdateDto.getCoolingOffDays()));
} }
// 获取币种字典值
policyFollow.setCurrency(this.getCurrencyValue(policyFollowUpdateDto.getCurrency()));
} }
// 设置核保信息 // 设置核保信息
setValidPolicyInfo(policyFollow, policyFollowUpdateRequest.getVerifyPolicyInfo()); setValidPolicyInfo(policyFollow, policyFollowUpdateRequest.getVerifyPolicyInfo());
...@@ -248,6 +250,9 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -248,6 +250,9 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
if (policyFollowAddRequest.getCoolingOffDays() != null) { if (policyFollowAddRequest.getCoolingOffDays() != null) {
policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollowAddRequest.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollowAddRequest.getCoolingOffDays())); policyFollow.setCoolingOffEndDate(DateUtil.offset(policyFollowAddRequest.getEffectiveDate(), DateField.DAY_OF_MONTH, policyFollowAddRequest.getCoolingOffDays()));
} }
// 获取币种字典值
policyFollow.setCurrency(this.getCurrencyValue(policyFollowAddRequest.getCurrency()));
// 创建 Policy对象 // 创建 Policy对象
Policy policy = new Policy(); Policy policy = new Policy();
BeanUtils.copyProperties(policyFollowAddRequest, policy); BeanUtils.copyProperties(policyFollowAddRequest, policy);
...@@ -527,6 +532,42 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -527,6 +532,42 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
} }
@Override @Override
public String getCurrencyValue(String currency) {
if (StringUtils.isBlank(currency)) {
return null;
}
switch (currency) {
case "美元":
currency = "USD";
break;
case "人民幣":
currency = "CNY";
break;
case "港幣":
currency = "HKD";
break;
case "澳元":
currency = "AUD";
break;
case "加元":
currency = "CAD";
break;
case "欧元":
currency = "EUR";
break;
case "英鎊":
currency = "GBP";
break;
case "新加坡元":
currency = "SGD";
break;
default:
break;
}
return currency;
}
@Override
public Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest) { public Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest) {
String policyBizId = attachmentUploadRequest.getPolicyBizId(); String policyBizId = attachmentUploadRequest.getPolicyBizId();
if (policyBizId == null) { if (policyBizId == null) {
......
package com.yd.csf.service.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
/**
* 佣金统计VO 包含总金额、总入账金额、待入账金额、已入账比例(已入账金额/总金额)、总保单数
*/
@Data
public class CommissionStatisticsVO {
/**
* 总金额
*/
@Schema(description = "总金额")
private BigDecimal totalAmount;
/**
* 总入账金额
*/
@Schema(description = "总入账金额")
private BigDecimal totalPaidAmount;
/**
* 待入账金额
*/
@Schema(description = "待入账金额")
private BigDecimal pendingPaidAmount;
/**
* 已入账比例(已入账金额/总金额)
*/
@Schema(description = "已入账比例(已入账金额/总金额)")
private BigDecimal paidAmountRatio;
/**
* 总保单数
*/
@Schema(description = "总保单数")
private Integer totalPolicyCount;
}
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