跟进任务初始化

This commit is contained in:
zhangchenbiao
2023-08-14 10:51:30 +08:00
parent fa86db7da7
commit a54a84a285
32 changed files with 1255 additions and 55 deletions

View File

@@ -0,0 +1,78 @@
package com.cool.store.service;
import com.cool.store.request.follow.AddFollowLogRequest;
import com.cool.store.request.follow.AddFollowTaskRequest;
import com.cool.store.request.follow.FollowTaskIdRequest;
import com.cool.store.request.follow.UpdateFollowTaskRequest;
import com.cool.store.vo.follow.FollowTaskLogVO;
import com.cool.store.vo.follow.FollowTaskPageVO;
import com.github.pagehelper.PageInfo;
/**
* @author zhangchenbiao
* @FileName: FollowTaskService
* @Description:
* @date 2023-08-10 11:10
*/
public interface FollowTaskService {
/**
* 工作台获取跟进任务
* @param pageNum
* @param pageSize
* @param taskStatus
* @param queryDate
* @param followUserId
* @return
*/
PageInfo<FollowTaskPageVO> getFollowTaskPage(Integer pageNum, Integer pageSize, Integer taskStatus, String queryDate, String followUserId);
/**
* 获取线索跟进日志
* @param pageNum
* @param pageSize
* @param partnerLineId
* @return
*/
PageInfo<FollowTaskLogVO> getFollowLogPage(Integer pageNum, Integer pageSize, Long partnerLineId);
/**
* 添加跟进日志
* @param request
* @param userId
* @return
*/
Integer addFollowLog(AddFollowLogRequest request, String userId);
/**
* 新增跟进任务
* @param request
* @param userId
* @return
*/
Long addFollowTask(AddFollowTaskRequest request, String userId);
/**
* 编辑跟进任务
* @param request
* @param userId
* @return
*/
Integer updateFollowTask(UpdateFollowTaskRequest request, String userId);
/**
* 完成跟进任务
* @param request
* @param userId
* @return
*/
Integer finishFollowTask(FollowTaskIdRequest request, String userId);
/**
* 作废跟进任务
* @param request
* @param userId
* @return
*/
Integer cancelFollowTask(FollowTaskIdRequest request, String userId);
}

View File

@@ -0,0 +1,150 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.HyFollowTaskDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerTaskInfoLogDAO;
import com.cool.store.dto.log.LineLogInfo;
import com.cool.store.dto.partner.PartnerSimpleInfoDTO;
import com.cool.store.entity.HyFollowTaskDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.enums.*;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.follow.AddFollowLogRequest;
import com.cool.store.request.follow.AddFollowTaskRequest;
import com.cool.store.request.follow.FollowTaskIdRequest;
import com.cool.store.request.follow.UpdateFollowTaskRequest;
import com.cool.store.service.FollowTaskService;
import com.cool.store.vo.follow.FollowTaskLogVO;
import com.cool.store.vo.follow.FollowTaskPageVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author zhangchenbiao
* @FileName: FollowTaskServiceImpl
* @Description:
* @date 2023-08-10 11:10
*/
@Service
public class FollowTaskServiceImpl implements FollowTaskService {
@Resource
private HyFollowTaskDAO hyFollowTaskDAO;
@Resource
private HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
@Resource
private HyPartnerTaskInfoLogDAO hyPartnerTaskInfoLogDAO;
@Resource
private EnterpriseUserDAO enterpriseUserDAO;
@Override
public PageInfo<FollowTaskPageVO> getFollowTaskPage(Integer pageNum, Integer pageSize, Integer taskStatus, String queryDate, String followUserId) {
String deadlineStartTIme = null, deadlineEndTIme = null;
if(StringUtils.isNotBlank(queryDate) && FollowTaskStatusEnum.TODO.getCode().equals(taskStatus)){
//只有待完成的时候需要根据截止时间查询
deadlineStartTIme = queryDate + CommonConstants.DAY_START_TIME_SUFFIX;
deadlineEndTIme = queryDate + CommonConstants.DAY_END_TIME_SUFFIX;
}
Page<HyFollowTaskDO> taskPage = hyFollowTaskDAO.getTaskPage(followUserId, taskStatus, deadlineStartTIme, deadlineEndTIme, pageNum, pageSize);
PageInfo resultPage = new PageInfo(taskPage);
if(CollectionUtils.isNotEmpty(taskPage)){
List<Long> partnerLineIds = taskPage.stream().map(HyFollowTaskDO::getPartnerLineId).distinct().collect(Collectors.toList());
Map<Long, PartnerSimpleInfoDTO> partnerSimpleInfoMap = hyPartnerLineInfoDAO.getPartnerSimpleInfoByLineIds(partnerLineIds);
List<FollowTaskPageVO> resultList = FollowTaskPageVO.convertVO(taskPage, partnerSimpleInfoMap);
resultPage.setList(resultList);
}
return resultPage;
}
@Override
public PageInfo<FollowTaskLogVO> getFollowLogPage(Integer pageNum, Integer pageSize, Long partnerLineId) {
return null;
}
@Override
public Integer addFollowLog(AddFollowLogRequest request, String userId) {
HyPartnerLineInfoDO lineInfo = checkLine(request.getPartnerLineId());
String userName = enterpriseUserDAO.getUserName(userId);
LineLogInfo lineLogInfo = new LineLogInfo(lineInfo.getPartnerId(), request.getPartnerLineId(), userId, userName, OperateTypeEnum.ADD_FOLLOW_LOG, WorkflowStageEnum.getWorkflowStageByCode(lineInfo.getWorkflowStage()), lineInfo.getWorkflowStatus(), null);
JSONObject jsonObject = new JSONObject();
jsonObject.put(OperateLogFieldValueEnum.FOLLOW_LOG.getCode(), request.getFollowLog());
lineLogInfo.setData(jsonObject);
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
return null;
}
@Override
public Long addFollowTask(AddFollowTaskRequest request, String userId) {
HyPartnerLineInfoDO lineInfo = checkLine(request.getPartnerLineId());
HyFollowTaskDO task = AddFollowTaskRequest.convertDO(request);
task.setFollowUserId(lineInfo.getInvestmentManager());
Long followTaskId = hyFollowTaskDAO.addFollowTask(task);
String userName = enterpriseUserDAO.getUserName(userId);
LineLogInfo lineLogInfo = new LineLogInfo(lineInfo.getPartnerId(), request.getPartnerLineId(), userId, userName, OperateTypeEnum.ADD_FOLLOW_TASK, WorkflowStageEnum.getWorkflowStageByCode(lineInfo.getWorkflowStage()), lineInfo.getWorkflowStatus(), null);
JSONObject jsonObject = new JSONObject();
jsonObject.put(OperateLogFieldValueEnum.FOLLOW_TASK_ID.getCode(), followTaskId);
lineLogInfo.setData(jsonObject);
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
return followTaskId;
}
@Override
public Integer updateFollowTask(UpdateFollowTaskRequest request, String userId) {
HyFollowTaskDO followTask = hyFollowTaskDAO.getFollowTask(request.getFollowTaskId());
if(!FollowTaskStatusEnum.TODO.getCode().equals(followTask.getTaskStatus())){
throw new ServiceException(ErrorCodeEnum.TASK_STATUS_NOT_ALLOW_OPERATE);
}
checkLine(followTask.getPartnerLineId());
HyFollowTaskDO task = UpdateFollowTaskRequest.convertDO(request);
return hyFollowTaskDAO.updateFollowTask(task);
}
@Override
public Integer finishFollowTask(FollowTaskIdRequest request, String userId) {
HyFollowTaskDO followTask = hyFollowTaskDAO.getFollowTask(request.getFollowTaskId());
if(!FollowTaskStatusEnum.TODO.getCode().equals(followTask.getTaskStatus()) && !FollowTaskStatusEnum.OVERDUE.getCode().equals(followTask.getTaskStatus())){
throw new ServiceException(ErrorCodeEnum.TASK_STATUS_NOT_ALLOW_OPERATE);
}
checkLine(followTask.getPartnerLineId());
return hyFollowTaskDAO.finishFollowTask(request.getFollowTaskId());
}
@Override
public Integer cancelFollowTask(FollowTaskIdRequest request, String userId) {
HyFollowTaskDO followTask = hyFollowTaskDAO.getFollowTask(request.getFollowTaskId());
if(!FollowTaskStatusEnum.TODO.getCode().equals(followTask.getTaskStatus())){
throw new ServiceException(ErrorCodeEnum.TASK_STATUS_NOT_ALLOW_OPERATE);
}
checkLine(followTask.getPartnerLineId());
return hyFollowTaskDAO.cancelFollowTask(request.getFollowTaskId());
}
/**
* 线索校验
* @param partnerLineId
* @return
*/
public HyPartnerLineInfoDO checkLine(Long partnerLineId){
HyPartnerLineInfoDO lineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(partnerLineId);
if(Objects.isNull(lineInfo) || lineInfo.getDeleted()){
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
if(!LineStatusEnum.PRIVATE_SEAS.getCode().equals(lineInfo.getLineStatus())){
//线索只有私海的时候才能操作
throw new ServiceException(ErrorCodeEnum.LINE_STATUS_NOT_ALLOW_OPERATE);
}
return lineInfo;
}
}