Commit eb2d934a by jianan

线上FYC和线下FYC合计

parent 7d54e977
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.vo.recruit.RecruitTrackInfo;
import com.yd.api.practitioner.vo.sechedule.*;
import com.yd.api.result.CommonResult;
import com.yd.dal.entity.customer.AclPractitionerPotentialAssignedTrack;
import com.yd.dal.entity.marketing.MktLeadsAssignedTrack;
import com.yd.dal.entity.meta.MdDropOptions;
import com.yd.dal.entity.practitioner.PEPScoreDetail;
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.entity.practitioner.*;
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.marketing.MktLeadsAssignedTrackDALService;
import com.yd.dal.service.meta.MdDropOptionsDALService;
import com.yd.util.CommonUtil;
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.lang.StringUtils;
import org.springframework.beans.BeanUtils;
......@@ -35,6 +37,8 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
private MdDropOptionsDALService mdDropOptionsDALService;
@Autowired
private MktLeadsAssignedTrackDALService mktLeadsAssignedTrackDALService;
@Autowired
private AgmsDashboardDALService agmsDashboardDALService;
@Override
public AddScheduleTrackResponseVO insert(AddScheduleTrackRequestVO requestVO) {
......@@ -280,8 +284,14 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
// 集合为空,说明该经纪人不是团队长
practitionerIdList.add(practitionerId);
}
// 根据团队长经纪人id查询团队每个成员本日,本周,本月得分以及本月FYC
// 根据团队长经纪人id查询团队每个成员本日,本周,本月得分以及---线上本月FYC
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 {
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
public QueryPEPScoreDetailResponseVO queryPEPScoreDetail(QueryPEPScoreDetailRequestVO requestVO) {
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;
public class PersonalPEPScore {
private Long practitionerId;
private String name;
private String mobileNo;
private Long dayScore;
private Long weekScore;
private Long monthScore;
......
......@@ -4,6 +4,7 @@ import com.yd.api.agms.vo.dashboard.StatisticsPractitionerInfo;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
import com.yd.dal.entity.practitioner.PersonalOffLineFYC;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -22,4 +23,6 @@ public interface AgmsDashboardMapper {
List<StatisticsPractitionerInfo> statisticsPractitioner(@Param("type")String type);
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;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsPEPInfo;
import com.yd.dal.entity.practitioner.PersonalOffLineFYC;
import java.util.List;
......@@ -17,4 +18,6 @@ public interface AgmsDashboardDALService {
List<StatisticsPractitionerInfo> statisticsPractitioner(String type);
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;
import com.yd.api.agms.vo.dashboard.StatisticsSalesInfo;
import com.yd.dal.entity.agms.dashboard.StatisticsOpportunityInfo;
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.service.agms.AgmsDashboardDALService;
import com.yd.util.intercept.annotation.TargetDataSource;
......@@ -138,4 +139,11 @@ public class AgmsDashboardDALServiceImpl implements AgmsDashboardDALService {
getUnitPremium(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
</choose>
order by sum(policy.INS001_FYCTOTAL) desc
</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>
\ No newline at end of file
......@@ -83,24 +83,35 @@
SELECT count(1)
FROM ag_mkt_schedule_task_tracking
WHERE practitioner_id = #{practitionerId,jdbcType=BIGINT}
AND to_days(created_at) = to_days(now())
AND to_days(track_time) = to_days(now())
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'))
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'))
</select>
<select id="querySaleRecuitScoreFYC" resultType="com.yd.dal.entity.practitioner.PersonalPEPScore">
SELECT practitionerId, name, dayScore, weekScore, monthScore, COALESCE(fyc,0) FYC
<resultMap id="PersonalPEPScore" type="com.yd.dal.entity.practitioner.PersonalPEPScore">
<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
(select p.id practitionerId,
p.name,
sum(case when to_days(t.created_at) = to_days(now()) then COALESCE(t.track_score,0) else 0 end) dayScore,
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 date_format(t.created_at,'%Y-%m')=date_format(now(),'%Y-%m') then COALESCE(t.track_score,0) else 0 end) monthScore
p.mobile_no,
sum(case when to_days(t.track_time) = to_days(now()) then COALESCE(t.track_score,0) else 0 end) dayScore,
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
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)
and date_format(track_time,'%Y-%m')=date_format(now(),'%Y-%m')
) t on p.id = t.practitioner_id
where 1=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