From 667e410ca5b6022cafcf54625efb9e2ed4d94987 Mon Sep 17 00:00:00 2001 From: Kurisu Date: Fri, 19 Feb 2021 15:58:08 +0800 Subject: [PATCH] :sparkles: 角色变动分配档案处理跟进任务逻辑完善 --- fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/LeaveNeedDoBizService.java | 41 +++++++++++++++++++++++++++++++++++++++++ fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/FollowBizService.java | 4 ++-- fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/AbstractFollowStrategy.java | 8 +++++--- fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/FollowStrategy.java | 2 +- fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/impl/ACFollowStrategy.java | 2 +- 5 files changed, 50 insertions(+), 7 deletions(-) diff --git a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/LeaveNeedDoBizService.java b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/LeaveNeedDoBizService.java index d595c08..3adfdbb 100644 --- a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/LeaveNeedDoBizService.java +++ b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/LeaveNeedDoBizService.java @@ -12,6 +12,7 @@ import cn.fw.valhalla.common.enums.AllocationTypeEnum; import cn.fw.valhalla.common.utils.DateUtil; import cn.fw.valhalla.domain.db.LeaveNeedDo; import cn.fw.valhalla.domain.db.customer.Customer; +import cn.fw.valhalla.domain.db.follow.FollowRecord; import cn.fw.valhalla.domain.db.follow.FollowTask; import cn.fw.valhalla.domain.db.pool.CustomerCluePool; import cn.fw.valhalla.domain.db.pool.StammkundePool; @@ -67,6 +68,7 @@ public class LeaveNeedDoBizService { private final OopService oopService; private final FollowBizService followBizService; private final FollowTaskService followTaskService; + private final FollowRecordService followRecordService; private final DistributedLocker distributedLocker; private final ImSendMessage imSendMessage; private final TodoRpcService todoRpcService; @@ -318,16 +320,23 @@ public class LeaveNeedDoBizService { if (Objects.isNull(task)) { return; } + UserInfoDTO user = userService.user(adviserId); + String userName = Objects.nonNull(user) ? user.getUserName() : ""; + if (Boolean.TRUE.equals(task.getRedistribution())) { task.setFollowUser(adviserId); + task.setFollowUserName(userName); task.setFollowShop(shopId); followTaskService.updateById(task); + stopRecord(task); return; } task.setCloseTime(new Date()); task.setState(TaskStateEnum.DEFEAT); task.setReason(TaskDefeatTypeEnum.D); followTaskService.updateById(task); + followRecordService.removeByTaskId(task.getId()); + FollowTask nTask = new FollowTask(); nTask.setClueId(clue.getId()); nTask.setCustomerId(clue.getRefererId()); @@ -337,12 +346,44 @@ public class LeaveNeedDoBizService { nTask.setRedistribution(Boolean.TRUE); nTask.setDeadline(clue.getDeadline()); nTask.setFollowUser(adviserId); + task.setFollowUserName(userName); nTask.setFollowShop(shopId); nTask.setGroupId(clue.getGroupId()); followTaskService.save(nTask); followBizService.startTask(nTask); } + private void stopRecord(FollowTask task) { + List list = followRecordService.list(Wrappers.lambdaQuery() + .eq(FollowRecord::getTaskId, task.getId()) + .eq(FollowRecord::getOutTime, Boolean.FALSE) + .eq(FollowRecord::getAddTodo, Boolean.FALSE) + .isNull(FollowRecord::getFollowTime) + ); + if (!CollectionUtils.isEmpty(list)) { + list.forEach(r -> { + r.setUserId(task.getFollowUser()); + r.setUserName(task.getFollowUserName()); + r.setShopId(task.getFollowShop()); + }); + followRecordService.updateBatchById(list); + } + + list = followRecordService.list(Wrappers.lambdaQuery() + .eq(FollowRecord::getTaskId, task.getId()) + .eq(FollowRecord::getOutTime, Boolean.FALSE) + .eq(FollowRecord::getAddTodo, Boolean.TRUE) + .isNull(FollowRecord::getFollowTime) + ); + if (CollectionUtils.isEmpty(list)) { + return; + } + for (FollowRecord record : list) { + followBizService.completeRecordAndEnd(record, true); + } + } + + private void finish(LoginAuthBean user, Long leaveId, String key) { leaveNeedDoService.dealById(leaveId); List list = getAllFromCache(key); diff --git a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/FollowBizService.java b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/FollowBizService.java index 9c53b20..93f4852 100644 --- a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/FollowBizService.java +++ b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/FollowBizService.java @@ -173,10 +173,10 @@ public class FollowBizService { * @param record */ @Transactional(rollbackFor = Exception.class) - public void completeRecordAndEnd(FollowRecord record) { + public void completeRecordAndEnd(FollowRecord record, boolean needNew) { FollowStrategy strategy = followMap.get(record.getType()); Assert.notNull(strategy, "strategy cannot be null"); - strategy.completeRecordAndEnd(record); + strategy.completeRecordAndEnd(record, needNew); } /** diff --git a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/AbstractFollowStrategy.java b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/AbstractFollowStrategy.java index f3d0a58..e21e948 100644 --- a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/AbstractFollowStrategy.java +++ b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/AbstractFollowStrategy.java @@ -213,7 +213,7 @@ public abstract class AbstractFollowStrategy implements FollowStrategy { @Override @Transactional(rollbackFor = Exception.class) - public void completeRecordAndEnd(FollowRecord record) { + public void completeRecordAndEnd(FollowRecord record, boolean needNew) { boolean equals = Boolean.FALSE.equals(record.getOutTime()) && Objects.isNull(record.getFollowTime()); if (!equals) { return; @@ -221,7 +221,9 @@ public abstract class AbstractFollowStrategy implements FollowStrategy { final Date followTime = DateUtil.localDateTime2Date(LocalDateTime.now()); record.setFollowTime(followTime); followRecordService.updateById(record); - this.addTaskRecord(record, false); + if (needNew) { + this.addTaskRecord(record, false); + } BackLogItemDTO dto = new BackLogItemDTO(record.getUserId(), getItemCode(record.getType()), String.valueOf(record.getId()), followTime, record.getShopId()); todoRpcService.complete(dto); } @@ -822,7 +824,7 @@ public abstract class AbstractFollowStrategy implements FollowStrategy { if (!CollectionUtils.isEmpty(recordList)) { for (FollowRecord record : recordList) { if (Boolean.TRUE.equals(record.getAddTodo())) { - completeRecordAndEnd(record); + completeRecordAndEnd(record, false); } else { followRecordService.removeById(record.getId()); } diff --git a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/FollowStrategy.java b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/FollowStrategy.java index ad8333c..1884cb4 100644 --- a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/FollowStrategy.java +++ b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/FollowStrategy.java @@ -69,7 +69,7 @@ public interface FollowStrategy { * * @param record */ - void completeRecordAndEnd(FollowRecord record); + void completeRecordAndEnd(FollowRecord record, boolean needNew); /** * 上传跟进附件 diff --git a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/impl/ACFollowStrategy.java b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/impl/ACFollowStrategy.java index 5a82bad..6a9c568 100644 --- a/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/impl/ACFollowStrategy.java +++ b/fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/impl/ACFollowStrategy.java @@ -104,7 +104,7 @@ public class ACFollowStrategy extends AbstractFollowStrategy { } @Override - public void completeRecordAndEnd(FollowRecord record) { + public void completeRecordAndEnd(FollowRecord record, boolean needNew) { final Date followTime = DateUtil.localDateTime2Date(LocalDateTime.now()); BackLogItemDTO dto = new BackLogItemDTO(record.getUserId(), getItemCode(record.getType()), String.valueOf(record.getId()), followTime, record.getShopId()); if (Boolean.FALSE.equals(record.getOutTime()) && Objects.isNull(record.getFollowTime())) { -- libgit2 0.22.2