Commit eb2d934a by jianan

线上FYC和线下FYC合计

parent 7d54e977
package com.yd.api.practitioner.service.impl; package com.yd.api.practitioner.service.impl;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.api.practitioner.service.ScheduleTrackService; import com.yd.api.practitioner.service.ScheduleTrackService;
import com.yd.api.practitioner.vo.recruit.RecruitTrackInfo;
import com.yd.api.practitioner.vo.sechedule.*; import com.yd.api.practitioner.vo.sechedule.*;
import com.yd.api.result.CommonResult; import com.yd.api.result.CommonResult;
import com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack; import com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack;
import com.yd.dal.entity.marketing.MktLeadsAssignedTrack; import com.yd.dal.entity.marketing.MktLeadsAssignedTrack;
import com.yd.dal.entity.meta.MdDropOptions; import com.yd.dal.entity.meta.MdDropOptions;
import com.yd.dal.entity.practitioner.PEPScoreDetail; import com.yd.dal.entity.practitioner.*;
import com.yd.dal.entity.practitioner.PersonalPEPScore;
import com.yd.dal.entity.practitioner.PersonalSchedule;
import com.yd.dal.entity.practitioner.ScheduleTrack;
import com.yd.dal.mapper.marketing.ScheduleTrackMapper; import com.yd.dal.mapper.marketing.ScheduleTrackMapper;
import com.yd.dal.service.agms.AgmsDashboardDALService;
import com.yd.dal.service.customer.AclPractitionerPotentialAssignedTrackDALService; import com.yd.dal.service.customer.AclPractitionerPotentialAssignedTrackDALService;
import com.yd.dal.service.marketing.MktLeadsAssignedTrackDALService; import com.yd.dal.service.marketing.MktLeadsAssignedTrackDALService;
import com.yd.dal.service.meta.MdDropOptionsDALService; import com.yd.dal.service.meta.MdDropOptionsDALService;
import com.yd.util.CommonUtil; import com.yd.util.CommonUtil;
import com.yd.util.config.ZHBErrorConfig; import com.yd.util.config.ZHBErrorConfig;
import com.yd.util.intercept.annotation.TargetDataSource;
import com.yd.util.intercept.commons.DataSourceKey;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -35,6 +37,8 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -35,6 +37,8 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
private MdDropOptionsDALService mdDropOptionsDALService; private MdDropOptionsDALService mdDropOptionsDALService;
@Autowired @Autowired
private MktLeadsAssignedTrackDALService mktLeadsAssignedTrackDALService; private MktLeadsAssignedTrackDALService mktLeadsAssignedTrackDALService;
@Autowired
private AgmsDashboardDALService agmsDashboardDALService;
@Override @Override
public AddScheduleTrackResponseVO insert(AddScheduleTrackRequestVO requestVO) { public AddScheduleTrackResponseVO insert(AddScheduleTrackRequestVO requestVO) {
...@@ -280,8 +284,14 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -280,8 +284,14 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
// 集合为空,说明该经纪人不是团队长 // 集合为空,说明该经纪人不是团队长
practitionerIdList.add(practitionerId); practitionerIdList.add(practitionerId);
} }
// 根据团队长经纪人id查询团队每个成员本日,本周,本月得分以及本月FYC // 根据团队长经纪人id查询团队每个成员本日,本周,本月得分以及---线上本月FYC
List<PersonalPEPScore> saleAndRecuit = scheduleTrackMapper.querySaleRecuitScoreFYC(practitionerIdList, monthOne, today); List<PersonalPEPScore> saleAndRecuit = scheduleTrackMapper.querySaleRecuitScoreFYC(practitionerIdList, monthOne, today);
// 获取mobileNoList
List<String> mobileNoList = new ArrayList<>();
saleAndRecuit.forEach(i->mobileNoList.add(i.getMobileNo()));
List<PersonalOffLineFYC> personalOffLineFYCList = agmsDashboardDALService.offLineFYC(mobileNoList);
// 计算总FYC
this.computeTotalFYC(saleAndRecuit, personalOffLineFYCList);
// 其他活动有长期固定,通过计算时间段内展示次数,算得总分 // 其他活动有长期固定,通过计算时间段内展示次数,算得总分
// 先获得每个人所有的其他活动 // 先获得每个人所有的其他活动
...@@ -309,6 +319,17 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -309,6 +319,17 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
return resp; return resp;
} }
private void computeTotalFYC(List<PersonalPEPScore> saleAndRecuit, List<PersonalOffLineFYC> personalOffLineFYCList) {
for (PersonalPEPScore online: saleAndRecuit ) {
for (PersonalOffLineFYC offline: personalOffLineFYCList) {
if (online.getMobileNo().equals(offline.getMobileNo())) {
online.getFYC().add(offline.getFYC());
break;
}
}
}
}
@Override @Override
public QueryPEPScoreDetailResponseVO queryPEPScoreDetail(QueryPEPScoreDetailRequestVO requestVO) { public QueryPEPScoreDetailResponseVO queryPEPScoreDetail(QueryPEPScoreDetailRequestVO requestVO) {
QueryPEPScoreDetailResponseVO resp = new QueryPEPScoreDetailResponseVO(); QueryPEPScoreDetailResponseVO resp = new QueryPEPScoreDetailResponseVO();
......
package com.yd.dal.entity.practitioner;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class PersonalOffLineFYC {
private String mobileNo;
private BigDecimal FYC;
}
...@@ -7,6 +7,7 @@ import java.math.BigDecimal; ...@@ -7,6 +7,7 @@ import java.math.BigDecimal;
public class PersonalPEPScore { public class PersonalPEPScore {
private Long practitionerId; private Long practitionerId;
private String name; private String name;
private String mobileNo;
private Long dayScore; private Long dayScore;
private Long weekScore; private Long weekScore;
private Long monthScore; private Long monthScore;
......
...@@ -4,6 +4,7 @@ import com.yd.api.agms.vo.dashboard.StatisticsPractitionerInfo; ...@@ -4,6 +4,7 @@ import com.yd.api.agms.vo.dashboard.StatisticsPractitionerInfo;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo; import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo; import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo; import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
import com.yd.dal.entity.practitioner.PersonalOffLineFYC;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -22,4 +23,6 @@ public interface AgmsDashboardMapper { ...@@ -22,4 +23,6 @@ public interface AgmsDashboardMapper {
List<StatisticsPractitionerInfo> statisticsPractitioner(@Param("type")String type); List<StatisticsPractitionerInfo> statisticsPractitioner(@Param("type")String type);
List<StatisticsSalesInfo> statisticsSalesEG(@Param("type")String type, @Param("time")String time); List<StatisticsSalesInfo> statisticsSalesEG(@Param("type")String type, @Param("time")String time);
List<PersonalOffLineFYC> personalOffLineFYC(List<String> mobileNoList);
} }
...@@ -4,6 +4,7 @@ import com.yd.api.agms.vo.dashboard.StatisticsPractitionerInfo; ...@@ -4,6 +4,7 @@ import com.yd.api.agms.vo.dashboard.StatisticsPractitionerInfo;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo; import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo; import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo; import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
import com.yd.dal.entity.practitioner.PersonalOffLineFYC;
import java.util.List; import java.util.List;
...@@ -17,4 +18,6 @@ public interface AgmsDashboardDALService { ...@@ -17,4 +18,6 @@ public interface AgmsDashboardDALService {
List<StatisticsPractitionerInfo> statisticsPractitioner(String type); List<StatisticsPractitionerInfo> statisticsPractitioner(String type);
List<StatisticsSalesInfo> statisticsSalesEG(String type, String time); List<StatisticsSalesInfo> statisticsSalesEG(String type, String time);
List<PersonalOffLineFYC> offLineFYC(List<String> mobileNoList);
} }
...@@ -4,6 +4,7 @@ import com.yd.api.agms.vo.dashboard.StatisticsPractitionerInfo; ...@@ -4,6 +4,7 @@ import com.yd.api.agms.vo.dashboard.StatisticsPractitionerInfo;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo; import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo; import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo; import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
import com.yd.dal.entity.practitioner.PersonalOffLineFYC;
import com.yd.dal.mapper.agms.AgmsDashboardMapper; import com.yd.dal.mapper.agms.AgmsDashboardMapper;
import com.yd.dal.service.agms.AgmsDashboardDALService; import com.yd.dal.service.agms.AgmsDashboardDALService;
import com.yd.util.intercept.annotation.TargetDataSource; import com.yd.util.intercept.annotation.TargetDataSource;
...@@ -138,4 +139,11 @@ public class AgmsDashboardDALServiceImpl implements AgmsDashboardDALService { ...@@ -138,4 +139,11 @@ public class AgmsDashboardDALServiceImpl implements AgmsDashboardDALService {
getUnitPremium(statisticsSalesInfos); getUnitPremium(statisticsSalesInfos);
return statisticsSalesInfos; return statisticsSalesInfos;
} }
@Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_EGOLDEN)
public List<PersonalOffLineFYC> offLineFYC(List<String> mobileNoList) {
List<PersonalOffLineFYC> personalOffLineFYCList = agmsDashboardMapper.personalOffLineFYC(mobileNoList);
return personalOffLineFYCList;
}
} }
...@@ -281,4 +281,19 @@ where ps.practitioner_type_id = 28 ...@@ -281,4 +281,19 @@ where ps.practitioner_type_id = 28
</choose> </choose>
order by sum(policy.INS001_FYCTOTAL) desc order by sum(policy.INS001_FYCTOTAL) desc
</select> </select>
<select id="personalOffLineFYC" resultType="com.yd.dal.entity.practitioner.PersonalOffLineFYC">
SELECT DISTINCT
sales.SAL_MST_MOBILE mobileNo,
sum(case when date_format(policy.INS_MST_SEND_DATE,'%Y-%m')=date_format(now(),'%Y-%m') then COALESCE(policy.INS001_FYCTOTAL,0) else 0 end) FYC
FROM sal001 sales LEFT JOIN ins003 p_sales on sales.SAL_MST_ID = p_sales.FK_SAL_MST_ID
LEFT JOIN ins001 policy on policy.INS_MST_ID = p_sales.FK_INS_MST_ID
WHERE policy.INS_MST_REPEAL != 1
AND sales.SAL_MST_MOBILE in
<foreach collection="list" item="mobileNo" index="index" open="(" close=")" separator=",">
#{mobileNo,jdbcType=VARCHAR}
</foreach>
group by sales.SAL_MST_MOBILE
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -83,24 +83,35 @@ ...@@ -83,24 +83,35 @@
SELECT count(1) SELECT count(1)
FROM ag_mkt_schedule_task_tracking FROM ag_mkt_schedule_task_tracking
WHERE practitioner_id = #{practitionerId,jdbcType=BIGINT} WHERE practitioner_id = #{practitionerId,jdbcType=BIGINT}
AND to_days(created_at) = to_days(now()) AND to_days(track_time) = to_days(now())
AND AND
(task_time_from &gt; STR_TO_DATE(#{taskTimeFrom,jdbcType=VARCHAR}, '%H:%i:%s') AND task_time_from &lt; STR_TO_DATE(#{taskTimeEnd,jdbcType=VARCHAR}, '%H:%i:%s')) (task_time_from &gt; STR_TO_DATE(#{taskTimeFrom,jdbcType=VARCHAR}, '%H:%i:%s') AND task_time_from &lt; STR_TO_DATE(#{taskTimeEnd,jdbcType=VARCHAR}, '%H:%i:%s'))
OR (task_time_from &lt; STR_TO_DATE(#{taskTimeFrom,jdbcType=VARCHAR}, '%H:%i:%s') AND task_time_end &gt; STR_TO_DATE(#{taskTimeEnd,jdbcType=VARCHAR}, '%H:%i:%s')) OR (task_time_from &lt; STR_TO_DATE(#{taskTimeFrom,jdbcType=VARCHAR}, '%H:%i:%s') AND task_time_end &gt; STR_TO_DATE(#{taskTimeEnd,jdbcType=VARCHAR}, '%H:%i:%s'))
OR (task_time_end &gt; STR_TO_DATE(#{taskTimeFrom,jdbcType=VARCHAR}, '%H:%i:%s') AND task_time_end &lt; STR_TO_DATE(#{taskTimeEnd,jdbcType=VARCHAR}, '%H:%i:%s')) OR (task_time_end &gt; STR_TO_DATE(#{taskTimeFrom,jdbcType=VARCHAR}, '%H:%i:%s') AND task_time_end &lt; STR_TO_DATE(#{taskTimeEnd,jdbcType=VARCHAR}, '%H:%i:%s'))
</select> </select>
<select id="querySaleRecuitScoreFYC" resultType="com.yd.dal.entity.practitioner.PersonalPEPScore"> <resultMap id="PersonalPEPScore" type="com.yd.dal.entity.practitioner.PersonalPEPScore">
SELECT practitionerId, name, dayScore, weekScore, monthScore, COALESCE(fyc,0) FYC <result column="practitionerId" jdbcType="BIGINT" property="practitionerId"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="mobile_no" jdbcType="VARCHAR" property="mobileNo" typeHandler="com.yd.util.deshandler.DESTypeHandler"/>
<result column="dayScore" jdbcType="BIGINT" property="dayScore"/>
<result column="weekScore" jdbcType="BIGINT" property="weekScore"/>
<result column="monthScore" jdbcType="BIGINT" property="monthScore"/>
<result column="FYC" jdbcType="DECIMAL" property="FYC"/>
</resultMap>
<select id="querySaleRecuitScoreFYC" resultMap="PersonalPEPScore">
SELECT practitionerId, name, dayScore, weekScore, monthScore, COALESCE(fyc,0) FYC, mobile_no
FROM FROM
(select p.id practitionerId, (select p.id practitionerId,
p.name, p.name,
sum(case when to_days(t.created_at) = to_days(now()) then COALESCE(t.track_score,0) else 0 end) dayScore, p.mobile_no,
sum(case when YEARWEEK(date_format(t.created_at,'%Y-%m-%d'),1) = YEARWEEK(now(),1) then COALESCE(t.track_score,0) else 0 end) weekScore, sum(case when to_days(t.track_time) = to_days(now()) then COALESCE(t.track_score,0) else 0 end) dayScore,
sum(case when date_format(t.created_at,'%Y-%m')=date_format(now(),'%Y-%m') then COALESCE(t.track_score,0) else 0 end) monthScore sum(case when YEARWEEK(date_format(t.track_time,'%Y-%m-%d'),1) = YEARWEEK(now(),1) then COALESCE(t.track_score,0) else 0 end) weekScore,
sum(case when date_format(t.track_time,'%Y-%m')=date_format(now(),'%Y-%m') then COALESCE(t.track_score,0) else 0 end) monthScore
from ag_acl_practitioner p from ag_acl_practitioner p
left join (select practitioner_id, created_at, track_score left join (select practitioner_id, track_time, track_score
from ag_mkt_schedule_task_tracking where md_drop_option_id not in (223,224,225,226,227) from ag_mkt_schedule_task_tracking where md_drop_option_id not in (223,224,225,226,227)
and date_format(track_time,'%Y-%m')=date_format(now(),'%Y-%m')
) t on p.id = t.practitioner_id ) t on p.id = t.practitioner_id
where 1=1 where 1=1
and p.is_active=1 and p.is_active=1
......
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