Commit 132ce465 by jianan

去除日程时间段冲突限制,添加同类型日程同时间段限制

parent 41032b4b
......@@ -70,11 +70,11 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
Date trackTime = schedule.getTrackTime();
Long practitionerId = schedule.getPractitionerId();
Long mdDropOptionId = schedule.getMdDropOptionId();
// 判断活动时间段是否冲突
// 判断日程是否重复
if (!CommonUtil.isNullOrBlank(taskTimeFrom) && !CommonUtil.isNullOrBlank(taskTimeEnd)) {
boolean isConflict = this.checkTimePeriodConflict(trackTime, taskTimeFrom, taskTimeEnd, practitionerId);
if (isConflict) {
resp.setCommonResult(new CommonResult(false, ZHBErrorConfig.getErrorInfo("830020")));
int count = scheduleTrackMapper.checkIsExist(practitionerId, trackTime, taskType, taskTimeFrom, taskTimeEnd);
if (count > 0) {
resp.setCommonResult(new CommonResult(false, "该时间段内该类型日程已存在"));
return resp;
}
} else {
......@@ -113,46 +113,11 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
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) {
MktLeadsAssignedTrack track = new MktLeadsAssignedTrack();
BeanUtils.copyProperties(schedule, track, "id");
track.setLeadsAssignedId(schedule.getReferLeadsId());
track.setSalesNotice(schedule.getNotice());
track.setScheduleTaskTrackingId(schedule.getId());
List<MktLeadsAssignedTrack> trackList = mktLeadsAssignedTrackDALService.findByTrackTimeForNew(track);
if (trackList.isEmpty()){
//保存
mktLeadsAssignedTrackDALService.saveTrack(track);
} else {
//更新
mktLeadsAssignedTrackDALService.updateTrack(track);
}
//保存
mktLeadsAssignedTrackDALService.saveTrack(track);
}
private void insertPotentialAssignedTrack(ScheduleTrack schedule) {
......@@ -176,32 +141,20 @@ public class ScheduleTrackServiceImpl implements ScheduleTrackService {
}
aclPractitionerPotentialAssignedTrackDALService.updateAll(assignedTrackUpdateList);
}
//2、查询团队长对该增员所有增员状态
List<AclPractitionerPotentialAssignedTrack> assignedTrackList = aclPractitionerPotentialAssignedTrackDALService.findByPractitionerIdAndPotentialIdAndTrackStatusId(practitionerId,potentialId,trackStatusId,trackTimeDate);
if (assignedTrackList == null || assignedTrackList.isEmpty()) {//3、如果没有,获取增员状态对应的分值,
MdDropOptions options = mdDropOptionsDALService.findById(trackStatusId);
assignedTrack.setTrackScore(options.getDropOptionScore());
assignedTrack.setPractitionerAssignedId(practitionerId);
assignedTrack.setPractitionerPotentialId(potentialId);
assignedTrack.setTrackStatusId(trackStatusId);
assignedTrack.setNotice(notice);
assignedTrack.setTrackTime(trackTimeDate);
assignedTrack.setIsActive(1);
assignedTrack.setIsLasted(1);
assignedTrack.setCreatorType(2);
assignedTrack.setCreatedBy(practitionerId);
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);
}
//2、插入
MdDropOptions options = mdDropOptionsDALService.findById(trackStatusId);
assignedTrack.setTrackScore(options.getDropOptionScore());
assignedTrack.setPractitionerAssignedId(practitionerId);
assignedTrack.setPractitionerPotentialId(potentialId);
assignedTrack.setTrackStatusId(trackStatusId);
assignedTrack.setNotice(notice);
assignedTrack.setTrackTime(trackTimeDate);
assignedTrack.setIsActive(1);
assignedTrack.setIsLasted(1);
assignedTrack.setCreatorType(2);
assignedTrack.setCreatedBy(practitionerId);
assignedTrack.setCreatedAt(new Date());
aclPractitionerPotentialAssignedTrackDALService.save(assignedTrack);
}
......
......@@ -28,5 +28,8 @@ public interface ScheduleTrackMapper {
void deleteScheduleTrackById(@Param("scheduleTrackId")Long scheduleTrackId);
String queryNameByPractitionerId(Long practitionerId);
int checkIsExist(@Param("practitionerId")Long practitionerId, @Param("trackTime")Date trackTime, @Param("taskType")Integer taskType,
@Param("taskTimeFrom")String taskTimeFrom, @Param("taskTimeEnd")String taskTimeEnd);
}
......@@ -244,4 +244,15 @@
where p.id = #{practitionerId,jdbcType=BIGINT}
</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 task_type = #{taskType,jdbcType=INTEGER}
</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