Commit 47459d7c by jianan

新单跟进75

parent ceaec495
package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yd.csf.service.dto.CommissionBindPolicyBrokerDto;
import com.yd.csf.service.dto.CommissionDto;
import com.yd.csf.service.model.Commission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -17,6 +20,8 @@ import java.util.List;
public interface CommissionMapper extends BaseMapper<Commission> {
List<CommissionBindPolicyBrokerDto> queryCommissionBindPolicyBrokerList(@Param("dto") CommissionDto dto);
CommissionStatisticsVO getCommissionStatistics(@Param("commissionIdList") List<Long> commissionIdList);
}
......
......@@ -29,17 +29,18 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author Zhang Jianan
* @description 针对表【commission(保单来佣表)】的数据库操作Service实现
* @createDate 2025-09-19 16:08:05
*/
* @author Zhang Jianan
* @description 针对表【commission(保单来佣表)】的数据库操作Service实现
* @createDate 2025-09-19 16:08:05
*/
@Service
public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commission>
implements CommissionService{
implements CommissionService {
@Resource
private FortuneService fortuneService;
......@@ -266,19 +267,21 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
/**
* 查询列表
*
* @param dto
* @return
*/
@Override
public List<Commission> queryList(CommissionDto dto) {
List<Commission> list = baseMapper.selectList(new LambdaQueryWrapper<Commission>()
.in(CollectionUtils.isNotEmpty(dto.getCommissionBizIdList()),Commission::getCommissionBizId,dto.getCommissionBizIdList())
.in(CollectionUtils.isNotEmpty(dto.getCommissionBizIdList()), Commission::getCommissionBizId, dto.getCommissionBizIdList())
);
return list;
}
/**
* 查询来佣保单转介人关系信息
*
* @param dto
* @return
*/
......@@ -290,30 +293,15 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@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;
CommissionStatisticsVO commissionStatistics = baseMapper.getCommissionStatistics(commissionStatisticsRequest.getCommissionIds());
// 计算待入账金额
commissionStatistics.setPendingPaidAmount(commissionStatistics.getTotalAmount().subtract(commissionStatistics.getTotalPaidAmount()));
// 计算已入账比例
BigDecimal divided = commissionStatistics.getTotalPaidAmount().divide(commissionStatistics.getTotalAmount(), 4, RoundingMode.HALF_UP);
// 格式化 %
commissionStatistics.setPaidAmountRatio(String.format("%.2f%%", divided.doubleValue() * 100));
return commissionStatistics;
}
}
......
......@@ -33,11 +33,12 @@ public class CommissionStatisticsVO {
* 已入账比例(已入账金额/总金额)
*/
@Schema(description = "已入账比例(已入账金额/总金额)")
private BigDecimal paidAmountRatio;
private String paidAmountRatio;
/**
* 总保单数
*/
@Schema(description = "总保单数")
private Integer totalPolicyCount;
}
......@@ -52,4 +52,26 @@
left join policy_broker pb on pb.policy_no = p.policy_no and pb.is_deleted = 0
</select>
<!-- 总金额:统计保单预计来佣表 已入账金额:统计来佣表-->
<select id="getCommissionStatistics" resultType="com.yd.csf.service.vo.CommissionStatisticsVO">
SELECT
COALESCE(SUM(e.amount), 0) as totalAmount,
COALESCE(SUM(c.amount), 0) as totalPaidAmount,
COUNT(DISTINCT c.policy_no) as totalPolicyCount
FROM commission c
LEFT JOIN (
SELECT policy_no, SUM(amount) as amount
FROM commission_expected
GROUP BY policy_no
) e ON c.policy_no = e.policy_no
<where>
<if test="commissionIdList != null and commissionIdList.size > 0">
c.id IN
<foreach collection="commissionIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</select>
</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