Commit dd567362 by yao.xiao

修改-AGMS的Dashboard中PEP查询

parent 75833914
......@@ -5,7 +5,9 @@ import lombok.Data;
@Data
public class StatisticsPEPInfo {
private String branchName;
private Long branchId;
private String subordinateName;
private Long subordinateId;
private Long practitionerNum;
private Double scoreDay;
private Double scoreWeek;
......
......@@ -5,6 +5,7 @@ import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface AgmsDashboardMapper {
......@@ -12,4 +13,5 @@ public interface AgmsDashboardMapper {
List<StatisticsOpportunityInfo> statisticsOpportunity(@Param("type")String type,@Param("time") String time, @Param("dropOptionId") Long dropOptionId);
List<Map<String, Long>> getPractitionerNums(@Param("type")String type);
}
......@@ -7,7 +7,13 @@ import com.yd.dal.service.agms.AgmsDashboardDALService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
@Service("agmsDashboardDALService")
public class AgmsDashboardDALServiceImpl implements AgmsDashboardDALService {
......@@ -17,7 +23,59 @@ public class AgmsDashboardDALServiceImpl implements AgmsDashboardDALService {
@Override
public List<StatisticsPEPInfo> statisticsPEP(String type,Long dropOptionId) {
return agmsDashboardMapper.statisticsPEP(type,dropOptionId);
//查询总分数
List<StatisticsPEPInfo> statisticsPEPInfos = agmsDashboardMapper.statisticsPEP(type, dropOptionId);
//查询寿险经纪人人数统计,按type分类
List<Map<String,Long>> practitionerNums = agmsDashboardMapper.getPractitionerNums(type);
ConcurrentMap<Long,Long> practitionerNumMap = new ConcurrentHashMap<>();
practitionerNums.forEach(u->practitionerNumMap.put(u.get("id"),u.get("practitionerNum")));
for (StatisticsPEPInfo statisticsPEPInfo:statisticsPEPInfos) {
Long practitionerNum = 0L;
if (type.equalsIgnoreCase("B")){
practitionerNum = practitionerNumMap.get(statisticsPEPInfo.getBranchId());
statisticsPEPInfo.setPractitionerNum(practitionerNum);
}else if (type.equalsIgnoreCase("T")){
Long subordinateId = statisticsPEPInfo.getSubordinateId();
practitionerNum = practitionerNumMap.get(subordinateId);
statisticsPEPInfo.setPractitionerNum(practitionerNum);
}
Double scoreDay = BigDecimal.valueOf(statisticsPEPInfo.getScoreDay())
.divide(BigDecimal.valueOf(practitionerNum),2,BigDecimal.ROUND_HALF_UP)
.doubleValue();
statisticsPEPInfo.setScoreDay(scoreDay);
Double scoreWeek = BigDecimal.valueOf(statisticsPEPInfo.getScoreWeek())
.divide(BigDecimal.valueOf(practitionerNum),2,BigDecimal.ROUND_HALF_UP)
.doubleValue();
statisticsPEPInfo.setScoreWeek(scoreWeek);
Double scoreMonth = BigDecimal.valueOf(statisticsPEPInfo.getScoreMonth())
.divide(BigDecimal.valueOf(practitionerNum),2,BigDecimal.ROUND_HALF_UP)
.doubleValue();
statisticsPEPInfo.setScoreMonth(scoreMonth);
Double scoreQuarter = BigDecimal.valueOf(statisticsPEPInfo.getScoreQuarter())
.divide(BigDecimal.valueOf(practitionerNum),2,BigDecimal.ROUND_HALF_UP)
.doubleValue();
statisticsPEPInfo.setScoreQuarter(scoreQuarter);
Double scoreYear = BigDecimal.valueOf(statisticsPEPInfo.getScoreYear())
.divide(BigDecimal.valueOf(practitionerNum),2,BigDecimal.ROUND_HALF_UP)
.doubleValue();
statisticsPEPInfo.setScoreYear(scoreYear);
Double scoreTotal = BigDecimal.valueOf(statisticsPEPInfo.getScoreTotal())
.divide(BigDecimal.valueOf(practitionerNum),2,BigDecimal.ROUND_HALF_UP)
.doubleValue();
statisticsPEPInfo.setScoreTotal(scoreTotal);
}
Comparator<StatisticsPEPInfo> byDay = Comparator.comparing(StatisticsPEPInfo::getScoreDay).reversed();
Comparator<StatisticsPEPInfo> byWeek = Comparator.comparing(StatisticsPEPInfo::getScoreWeek).reversed();
Comparator<StatisticsPEPInfo> byMonth = Comparator.comparing(StatisticsPEPInfo::getScoreMonth).reversed();
Comparator<StatisticsPEPInfo> byQuarter = Comparator.comparing(StatisticsPEPInfo::getScoreQuarter).reversed();
Comparator<StatisticsPEPInfo> statisticsPEPInfoComparator = byDay.thenComparing(byWeek).thenComparing(byMonth).thenComparing(byQuarter);
statisticsPEPInfos = statisticsPEPInfos.stream().sorted(statisticsPEPInfoComparator).collect(Collectors.toList());
return statisticsPEPInfos;
}
@Override
......
......@@ -4,21 +4,24 @@
<select id="statisticsPEP" resultType="com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo">
select if(b.branch_name is null,'暂无公司',b.branch_name) branchName,
if(s.name is null ,'暂无团队',s.name) subordinateName,
count(p.id) practitionerNum,
sum(case when to_days(t.track_time)=to_days(now()) then t.track_score else 0 end)/count(p.id) scoreDay,
sum(case when YEARWEEK(date_format(t.track_time,'%Y-%m-%d')) = YEARWEEK(now()) then t.track_score else 0 end)/count(p.id) scoreWeek,
sum(case when date_format(t.track_time,'%Y-%m')=date_format(now(),'%Y-%m') then t.track_score else 0 end)/count(p.id) scoreMonth,
sum(case when QUARTER(t.track_time)=QUARTER(now()) then t.track_score else 0 end)/count(p.id) scoreQuarter,
sum(case when YEAR(t.track_time)=YEAR(now()) then t.track_score else 0 end)/count(p.id) scoreYear,
sum(case when t.track_score is not null then t.track_score else 0 end)/count(p.id) scoreTotal
select if(b.branch_name is null,'暂无公司',b.branch_name) branchName,
if(p.insurer_branch_id is null,0,p.insurer_branch_id) branchId,
if(s.name is null ,'暂无团队',s.name) subordinateName,
if(p.subordinate_system_id is null ,0,p.subordinate_system_id) subordinateId,
sum(case when to_days(t.track_time)=to_days(now()) then t.track_score else 0 end) scoreDay,
sum(case when YEARWEEK(date_format(t.track_time,'%Y-%m-%d')) = YEARWEEK(now()) then t.track_score else 0 end) scoreWeek,
sum(case when date_format(t.track_time,'%Y-%m')=date_format(now(),'%Y-%m') then t.track_score else 0 end) scoreMonth,
sum(case when QUARTER(t.track_time)=QUARTER(now()) then t.track_score else 0 end) scoreQuarter,
sum(case when YEAR(t.track_time)=YEAR(now()) then t.track_score else 0 end) scoreYear,
sum(case when t.track_score is not null then t.track_score else 0 end) scoreTotal
from ag_acl_practitioner p
left join ag_mkt_leads_assigneds a on p.id = a.assigned_practitioner_id
left join ag_mkt_leads_assigned_track t on t.leads_assigned_id = a.id
left join ag_acl_insurer_branch b on b.id = p.insurer_branch_id
left join ag_acl_practitioner_subordinate_system s on s.id = p.subordinate_system_id
where not EXISTS(
left join ag_acl_practitioner_setting ps on ps.practitioner_id = p.id
where ps.practitioner_type_id = 28
and not EXISTS(
select tt.leads_assigned_id
from ag_mkt_leads_assigned_track tt
where tt.md_drop_option_id = #{dropOptionId,jdbcType=BIGINT}
......@@ -73,7 +76,10 @@ from ag_acl_practitioner p
left join ag_mkt_leads_assigneds a on p.id = a.assigned_practitioner_id
left join ag_acl_insurer_branch b on b.id = p.insurer_branch_id
left join ag_acl_practitioner_subordinate_system s on s.id = p.subordinate_system_id
where not EXISTS(
left join ag_acl_practitioner_setting ps on ps.practitioner_id = p.id
where
ps.practitioner_type_id = 28
and not EXISTS(
select tt.leads_assigned_id
from ag_mkt_leads_assigned_track tt
where tt.md_drop_option_id = #{dropOptionId,jdbcType=BIGINT}
......@@ -88,6 +94,29 @@ where not EXISTS(
</choose>
order by predictFYC desc ,predictFYP desc ,pieces desc ,opportunityNum desc;
</select>
<select id="getPractitionerNums" resultType="java.util.Map">
select
<choose>
<when test="type.equalsIgnoreCase('B')">
if(p.insurer_branch_id is null,0,p.insurer_branch_id) id,
</when>
<when test="type.equalsIgnoreCase('T')">
if(p.subordinate_system_id is null,0,p.subordinate_system_id) id,
</when>
</choose>
count(p.id) practitionerNum
from ag_acl_practitioner p
left join ag_acl_practitioner_setting ps on ps.practitioner_id = p.id
where ps.practitioner_type_id = 28
<choose>
<when test="type.equalsIgnoreCase('B')">
group by p.insurer_branch_id
</when>
<when test="type.equalsIgnoreCase('T')">
group by p.subordinate_system_id
</when>
</choose>
</select>
</mapper>
\ No newline at end of file
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