Commit 47459d7c by jianan

新单跟进75

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