Commit 64b026e3 by Simon Cheng

Merge remote-tracking branch 'origin/dev_20200908_PEP_Statistics' into dev

parents b6b589bb 0b9b07a8
...@@ -70,11 +70,11 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -70,11 +70,11 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
Date trackTime = schedule.getTrackTime(); Date trackTime = schedule.getTrackTime();
Long practitionerId = schedule.getPractitionerId(); Long practitionerId = schedule.getPractitionerId();
Long mdDropOptionId = schedule.getMdDropOptionId(); Long mdDropOptionId = schedule.getMdDropOptionId();
// 判断活动时间段是否冲突 // 判断日程是否重复
if (!CommonUtil.isNullOrBlank(taskTimeFrom) && !CommonUtil.isNullOrBlank(taskTimeEnd)) { if (!CommonUtil.isNullOrBlank(taskTimeFrom) && !CommonUtil.isNullOrBlank(taskTimeEnd)) {
boolean isConflict = this.checkTimePeriodConflict(trackTime, taskTimeFrom, taskTimeEnd, practitionerId); int count = scheduleTrackMapper.checkIsExist(practitionerId, trackTime, mdDropOptionId, taskTimeFrom, taskTimeEnd);
if (isConflict) { if (count > 0) {
resp.setCommonResult(new CommonResult(false, ZHBErrorConfig.getErrorInfo("830020"))); resp.setCommonResult(new CommonResult(false, "该时间段内该类型日程已存在"));
return resp; return resp;
} }
} else { } else {
...@@ -113,46 +113,11 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -113,46 +113,11 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
return resp; return resp;
} }
private boolean checkTimePeriodConflict(Date trackTime, String taskTimeFrom, String taskTimeEnd, Long practitionerId) {
List<ScheduleTrack> showList = new ArrayList<>();
List<ScheduleTrack> dataList = scheduleTrackMapper.queryScheduleTrackList(practitionerId);
// 获得当天展示的日程列表
for (ScheduleTrack schedule: dataList) {
if (this.checkFixedDay(CommonUtil.dateParseString(trackTime, "yyyy-MM-dd"), schedule)) {
showList.add(schedule);
}
}
// 检查时间段是否冲突
boolean isConflict = false;
String taskStartTime;
String taskEndTime;
for (ScheduleTrack schedule: showList) {
taskStartTime = schedule.getTaskTimeFrom();
taskEndTime = schedule.getTaskTimeEnd();
if (taskStartTime.compareTo(taskTimeEnd)<0 && taskEndTime.compareTo(taskTimeFrom)>0) {
isConflict = true;
break;
}
}
return isConflict;
}
private void insertOpportunityRecord(ScheduleTrack schedule) { private void insertOpportunityRecord(ScheduleTrack schedule) {
MktLeadsAssignedTrack track = new MktLeadsAssignedTrack(); MktLeadsAssignedTrack track = new MktLeadsAssignedTrack();
BeanUtils.copyProperties(schedule, track, "id"); BeanUtils.copyProperties(schedule, track, "id");
//保存
track.setLeadsAssignedId(schedule.getReferLeadsId()); mktLeadsAssignedTrackDALService.saveTrack(track);
track.setSalesNotice(schedule.getNotice());
track.setScheduleTaskTrackingId(schedule.getId());
List<MktLeadsAssignedTrack> trackList = mktLeadsAssignedTrackDALService.findByTrackTimeForNew(track);
if (trackList.isEmpty()){
//保存
mktLeadsAssignedTrackDALService.saveTrack(track);
} else {
//更新
mktLeadsAssignedTrackDALService.updateTrack(track);
}
} }
private void insertPotentialAssignedTrack(ScheduleTrack schedule) { private void insertPotentialAssignedTrack(ScheduleTrack schedule) {
...@@ -176,32 +141,20 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -176,32 +141,20 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
} }
aclPractitionerPotentialAssignedTrackDALService.updateAll(assignedTrackUpdateList); aclPractitionerPotentialAssignedTrackDALService.updateAll(assignedTrackUpdateList);
} }
//2、查询团队长对该增员所有增员状态 //2、插入
List<AclPractitionerPotentialAssignedTrack> assignedTrackList = aclPractitionerPotentialAssignedTrackDALService.findByPractitionerIdAndPotentialIdAndTrackStatusId(practitionerId,potentialId,trackStatusId,trackTimeDate); MdDropOptions options = mdDropOptionsDALService.findById(trackStatusId);
if (assignedTrackList == null || assignedTrackList.isEmpty()) {//3、如果没有,获取增员状态对应的分值, assignedTrack.setTrackScore(options.getDropOptionScore());
MdDropOptions options = mdDropOptionsDALService.findById(trackStatusId); assignedTrack.setPractitionerAssignedId(practitionerId);
assignedTrack.setTrackScore(options.getDropOptionScore()); assignedTrack.setPractitionerPotentialId(potentialId);
assignedTrack.setPractitionerAssignedId(practitionerId); assignedTrack.setTrackStatusId(trackStatusId);
assignedTrack.setPractitionerPotentialId(potentialId); assignedTrack.setNotice(notice);
assignedTrack.setTrackStatusId(trackStatusId); assignedTrack.setTrackTime(trackTimeDate);
assignedTrack.setNotice(notice); assignedTrack.setIsActive(1);
assignedTrack.setTrackTime(trackTimeDate); assignedTrack.setIsLasted(1);
assignedTrack.setIsActive(1); assignedTrack.setCreatorType(2);
assignedTrack.setIsLasted(1); assignedTrack.setCreatedBy(practitionerId);
assignedTrack.setCreatorType(2); assignedTrack.setCreatedAt(new Date());
assignedTrack.setCreatedBy(practitionerId); aclPractitionerPotentialAssignedTrackDALService.save(assignedTrack);
assignedTrack.setCreatedAt(new Date());
aclPractitionerPotentialAssignedTrackDALService.save(assignedTrack);
} else {
assignedTrack = assignedTrackList.get(0);
assignedTrack.setNotice(notice);
assignedTrack.setIsLasted(1);
assignedTrack.setUpdatedAt(new Date());
assignedTrack.setUpdatedBy(practitionerId);
assignedTrack.setUpdaterType(2);
aclPractitionerPotentialAssignedTrackDALService.update(assignedTrack);
}
} }
...@@ -217,7 +170,7 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -217,7 +170,7 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
} }
List<ScheduleTrackVO> showList = new ArrayList<>(); List<ScheduleTrackVO> showList = new ArrayList<>();
try { try {
List<ScheduleTrack> dataList = scheduleTrackMapper.queryScheduleTrackList(practitionerId); List<ScheduleTrack> dataList = scheduleTrackMapper.queryScheduleTrackList(practitionerId, trackDate);
Map<Long, MdDropOptions> taskTypeMap = this.getScheduleTaskTypeMap(); Map<Long, MdDropOptions> taskTypeMap = this.getScheduleTaskTypeMap();
String optionName = null; String optionName = null;
for (ScheduleTrack schedule: dataList) { for (ScheduleTrack schedule: dataList) {
...@@ -324,7 +277,7 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -324,7 +277,7 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
// 其他活动有长期固定,通过计算时间段内展示次数,算得总分 // 其他活动有长期固定,通过计算时间段内展示次数,算得总分
// 先获得每个人所有的其他活动 // 先获得每个人所有的其他活动
List<PersonalSchedule> personalScheduleList = scheduleTrackMapper.queryPersonalScheduleList(practitionerIdList); List<PersonalSchedule> personalScheduleList = scheduleTrackMapper.queryPersonalScheduleList(practitionerIdList, today);
// 根据活动算本日,本周,本月的分数 // 根据活动算本日,本周,本月的分数
this.computeOtherScore(personalScheduleList, today, weekOne, monthOne); this.computeOtherScore(personalScheduleList, today, weekOne, monthOne);
...@@ -387,7 +340,7 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService { ...@@ -387,7 +340,7 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
} }
try { try {
// 根据经纪人id查询个人所有日程 // 根据经纪人id查询个人所有日程
List<ScheduleTrack> scheduleList = scheduleTrackMapper.queryPersonalScheduleListByTime(practitionerId, time); List<ScheduleTrack> scheduleList = scheduleTrackMapper.queryPersonalScheduleListByTime(practitionerId, time, new Date());
// 计算增员日程和销售日程的得分 // 计算增员日程和销售日程的得分
List<Long> saleOption = mdDropOptionsDALService.queryIdByByDropMasterCode("bizchance_promotion_action"); List<Long> saleOption = mdDropOptionsDALService.queryIdByByDropMasterCode("bizchance_promotion_action");
List<Long> RecruitOption = mdDropOptionsDALService.queryIdByByDropMasterCode("team_building_track"); List<Long> RecruitOption = mdDropOptionsDALService.queryIdByByDropMasterCode("team_building_track");
......
...@@ -12,7 +12,7 @@ public interface ScheduleTrackMapper { ...@@ -12,7 +12,7 @@ public interface ScheduleTrackMapper {
void insert(ScheduleTrack schedule); void insert(ScheduleTrack schedule);
List<ScheduleTrack> queryScheduleTrackList(@Param("practitionerId")Long practitionerId); List<ScheduleTrack> queryScheduleTrackList(@Param("practitionerId")Long practitionerId, @Param("trackDate")String trackDate);
int checkTimePeriodConflict(@Param("trackTime")Date trackTime, @Param("taskTimeFrom")String taskTimeFrom, int checkTimePeriodConflict(@Param("trackTime")Date trackTime, @Param("taskTimeFrom")String taskTimeFrom,
@Param("taskTimeEnd")String taskTimeEnd, @Param("practitionerId")Long practitionerId); @Param("taskTimeEnd")String taskTimeEnd, @Param("practitionerId")Long practitionerId);
...@@ -21,12 +21,15 @@ public interface ScheduleTrackMapper { ...@@ -21,12 +21,15 @@ public interface ScheduleTrackMapper {
List<Long> queryTeamAllPractitionerId(@Param("practitionerId")Long practitionerId); List<Long> queryTeamAllPractitionerId(@Param("practitionerId")Long practitionerId);
List<PersonalSchedule> queryPersonalScheduleList(List<Long> practitionerIdList); List<PersonalSchedule> queryPersonalScheduleList(@Param("list")List<Long> practitionerIdList, @Param("trackDate")Date trackDate);
List<ScheduleTrack> queryPersonalScheduleListByTime(@Param("practitionerId")Long practitionerId, @Param("time")String time); List<ScheduleTrack> queryPersonalScheduleListByTime(@Param("practitionerId")Long practitionerId, @Param("time")String time, @Param("trackDate")Date trackDate);
void deleteScheduleTrackById(@Param("scheduleTrackId")Long scheduleTrackId); void deleteScheduleTrackById(@Param("scheduleTrackId")Long scheduleTrackId);
String queryNameByPractitionerId(Long practitionerId); String queryNameByPractitionerId(Long practitionerId);
int checkIsExist(@Param("practitionerId")Long practitionerId, @Param("trackTime")Date trackTime, @Param("mdDropOptionId")Long mdDropOptionId,
@Param("taskTimeFrom")String taskTimeFrom, @Param("taskTimeEnd")String taskTimeEnd);
} }
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
FROM ag_mkt_schedule_task_tracking t FROM ag_mkt_schedule_task_tracking t
LEFT JOIN ag_acl_customer c on t.customer_id=c.id LEFT JOIN ag_acl_customer c on t.customer_id=c.id
WHERE practitioner_id = #{practitionerId,jdbcType=BIGINT} WHERE practitioner_id = #{practitionerId,jdbcType=BIGINT}
AND DATEDIFF(#{trackDate,jdbcType=VARCHAR},track_time) &lt; 365
ORDER BY task_time_from ORDER BY task_time_from
</select> </select>
...@@ -189,6 +190,7 @@ ...@@ -189,6 +190,7 @@
FROM FROM
ag_mkt_schedule_task_tracking t ag_mkt_schedule_task_tracking t
WHERE 1=1 WHERE 1=1
AND DATEDIFF(#{trackDate,jdbcType=TIMESTAMP},track_time) &lt; 365
AND md_drop_option_id in AND md_drop_option_id in
(SELECT o.id FROM ag_md_drop_options o LEFT JOIN ag_md_drop_master m ON m.id = o.drop_master_id (SELECT o.id FROM ag_md_drop_options o LEFT JOIN ag_md_drop_master m ON m.id = o.drop_master_id
WHERE m.scenario_code = 'pep_schedule_task_others' WHERE m.scenario_code = 'pep_schedule_task_others'
...@@ -229,6 +231,7 @@ ...@@ -229,6 +231,7 @@
created_at, created_by, updated_at, updated_by, updator_type, creator_type created_at, created_by, updated_at, updated_by, updator_type, creator_type
from ag_mkt_schedule_task_tracking t from ag_mkt_schedule_task_tracking t
where t.practitioner_id = #{practitionerId,jdbcType=BIGINT} where t.practitioner_id = #{practitionerId,jdbcType=BIGINT}
and DATEDIFF(#{trackDate,jdbcType=TIMESTAMP},track_time) &lt; 365
and md_drop_option_id in and md_drop_option_id in
(SELECT o.id FROM ag_md_drop_options o LEFT JOIN ag_md_drop_master m ON m.id = o.drop_master_id (SELECT o.id FROM ag_md_drop_options o LEFT JOIN ag_md_drop_master m ON m.id = o.drop_master_id
WHERE m.scenario_code = 'pep_schedule_task_others' WHERE m.scenario_code = 'pep_schedule_task_others'
...@@ -244,4 +247,15 @@ ...@@ -244,4 +247,15 @@
where p.id = #{practitionerId,jdbcType=BIGINT} where p.id = #{practitionerId,jdbcType=BIGINT}
</select> </select>
<select id="checkIsExist" resultType="int">
SELECT count(1)
FROM ag_mkt_schedule_task_tracking
WHERE 1=1
AND to_days(track_time) = to_days(#{trackTime,jdbcType=TIMESTAMP})
AND practitioner_id = #{practitionerId,jdbcType=BIGINT}
AND task_time_from = STR_TO_DATE(#{taskTimeFrom,jdbcType=VARCHAR}, '%H:%i:%s')
AND task_time_end = STR_TO_DATE(#{taskTimeEnd,jdbcType=VARCHAR}, '%H:%i:%s')
AND md_drop_option_id = #{mdDropOptionId,jdbcType=BIGINT}
</select>
</mapper> </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