Commit 667e410ca5b6022cafcf54625efb9e2ed4d94987
1 parent
4af298c8
角色变动分配档案处理跟进任务逻辑完善
Showing
5 changed files
with
50 additions
and
7 deletions
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/LeaveNeedDoBizService.java
... | ... | @@ -12,6 +12,7 @@ import cn.fw.valhalla.common.enums.AllocationTypeEnum; |
12 | 12 | import cn.fw.valhalla.common.utils.DateUtil; |
13 | 13 | import cn.fw.valhalla.domain.db.LeaveNeedDo; |
14 | 14 | import cn.fw.valhalla.domain.db.customer.Customer; |
15 | +import cn.fw.valhalla.domain.db.follow.FollowRecord; | |
15 | 16 | import cn.fw.valhalla.domain.db.follow.FollowTask; |
16 | 17 | import cn.fw.valhalla.domain.db.pool.CustomerCluePool; |
17 | 18 | import cn.fw.valhalla.domain.db.pool.StammkundePool; |
... | ... | @@ -67,6 +68,7 @@ public class LeaveNeedDoBizService { |
67 | 68 | private final OopService oopService; |
68 | 69 | private final FollowBizService followBizService; |
69 | 70 | private final FollowTaskService followTaskService; |
71 | + private final FollowRecordService followRecordService; | |
70 | 72 | private final DistributedLocker distributedLocker; |
71 | 73 | private final ImSendMessage imSendMessage; |
72 | 74 | private final TodoRpcService todoRpcService; |
... | ... | @@ -318,16 +320,23 @@ public class LeaveNeedDoBizService { |
318 | 320 | if (Objects.isNull(task)) { |
319 | 321 | return; |
320 | 322 | } |
323 | + UserInfoDTO user = userService.user(adviserId); | |
324 | + String userName = Objects.nonNull(user) ? user.getUserName() : ""; | |
325 | + | |
321 | 326 | if (Boolean.TRUE.equals(task.getRedistribution())) { |
322 | 327 | task.setFollowUser(adviserId); |
328 | + task.setFollowUserName(userName); | |
323 | 329 | task.setFollowShop(shopId); |
324 | 330 | followTaskService.updateById(task); |
331 | + stopRecord(task); | |
325 | 332 | return; |
326 | 333 | } |
327 | 334 | task.setCloseTime(new Date()); |
328 | 335 | task.setState(TaskStateEnum.DEFEAT); |
329 | 336 | task.setReason(TaskDefeatTypeEnum.D); |
330 | 337 | followTaskService.updateById(task); |
338 | + followRecordService.removeByTaskId(task.getId()); | |
339 | + | |
331 | 340 | FollowTask nTask = new FollowTask(); |
332 | 341 | nTask.setClueId(clue.getId()); |
333 | 342 | nTask.setCustomerId(clue.getRefererId()); |
... | ... | @@ -337,12 +346,44 @@ public class LeaveNeedDoBizService { |
337 | 346 | nTask.setRedistribution(Boolean.TRUE); |
338 | 347 | nTask.setDeadline(clue.getDeadline()); |
339 | 348 | nTask.setFollowUser(adviserId); |
349 | + task.setFollowUserName(userName); | |
340 | 350 | nTask.setFollowShop(shopId); |
341 | 351 | nTask.setGroupId(clue.getGroupId()); |
342 | 352 | followTaskService.save(nTask); |
343 | 353 | followBizService.startTask(nTask); |
344 | 354 | } |
345 | 355 | |
356 | + private void stopRecord(FollowTask task) { | |
357 | + List<FollowRecord> list = followRecordService.list(Wrappers.<FollowRecord>lambdaQuery() | |
358 | + .eq(FollowRecord::getTaskId, task.getId()) | |
359 | + .eq(FollowRecord::getOutTime, Boolean.FALSE) | |
360 | + .eq(FollowRecord::getAddTodo, Boolean.FALSE) | |
361 | + .isNull(FollowRecord::getFollowTime) | |
362 | + ); | |
363 | + if (!CollectionUtils.isEmpty(list)) { | |
364 | + list.forEach(r -> { | |
365 | + r.setUserId(task.getFollowUser()); | |
366 | + r.setUserName(task.getFollowUserName()); | |
367 | + r.setShopId(task.getFollowShop()); | |
368 | + }); | |
369 | + followRecordService.updateBatchById(list); | |
370 | + } | |
371 | + | |
372 | + list = followRecordService.list(Wrappers.<FollowRecord>lambdaQuery() | |
373 | + .eq(FollowRecord::getTaskId, task.getId()) | |
374 | + .eq(FollowRecord::getOutTime, Boolean.FALSE) | |
375 | + .eq(FollowRecord::getAddTodo, Boolean.TRUE) | |
376 | + .isNull(FollowRecord::getFollowTime) | |
377 | + ); | |
378 | + if (CollectionUtils.isEmpty(list)) { | |
379 | + return; | |
380 | + } | |
381 | + for (FollowRecord record : list) { | |
382 | + followBizService.completeRecordAndEnd(record, true); | |
383 | + } | |
384 | + } | |
385 | + | |
386 | + | |
346 | 387 | private void finish(LoginAuthBean user, Long leaveId, String key) { |
347 | 388 | leaveNeedDoService.dealById(leaveId); |
348 | 389 | List<UserInfo> list = getAllFromCache(key); | ... | ... |
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/FollowBizService.java
... | ... | @@ -173,10 +173,10 @@ public class FollowBizService { |
173 | 173 | * @param record |
174 | 174 | */ |
175 | 175 | @Transactional(rollbackFor = Exception.class) |
176 | - public void completeRecordAndEnd(FollowRecord record) { | |
176 | + public void completeRecordAndEnd(FollowRecord record, boolean needNew) { | |
177 | 177 | FollowStrategy strategy = followMap.get(record.getType()); |
178 | 178 | Assert.notNull(strategy, "strategy cannot be null"); |
179 | - strategy.completeRecordAndEnd(record); | |
179 | + strategy.completeRecordAndEnd(record, needNew); | |
180 | 180 | } |
181 | 181 | |
182 | 182 | /** | ... | ... |
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 { |
213 | 213 | |
214 | 214 | @Override |
215 | 215 | @Transactional(rollbackFor = Exception.class) |
216 | - public void completeRecordAndEnd(FollowRecord record) { | |
216 | + public void completeRecordAndEnd(FollowRecord record, boolean needNew) { | |
217 | 217 | boolean equals = Boolean.FALSE.equals(record.getOutTime()) && Objects.isNull(record.getFollowTime()); |
218 | 218 | if (!equals) { |
219 | 219 | return; |
... | ... | @@ -221,7 +221,9 @@ public abstract class AbstractFollowStrategy implements FollowStrategy { |
221 | 221 | final Date followTime = DateUtil.localDateTime2Date(LocalDateTime.now()); |
222 | 222 | record.setFollowTime(followTime); |
223 | 223 | followRecordService.updateById(record); |
224 | - this.addTaskRecord(record, false); | |
224 | + if (needNew) { | |
225 | + this.addTaskRecord(record, false); | |
226 | + } | |
225 | 227 | BackLogItemDTO dto = new BackLogItemDTO(record.getUserId(), getItemCode(record.getType()), String.valueOf(record.getId()), followTime, record.getShopId()); |
226 | 228 | todoRpcService.complete(dto); |
227 | 229 | } |
... | ... | @@ -822,7 +824,7 @@ public abstract class AbstractFollowStrategy implements FollowStrategy { |
822 | 824 | if (!CollectionUtils.isEmpty(recordList)) { |
823 | 825 | for (FollowRecord record : recordList) { |
824 | 826 | if (Boolean.TRUE.equals(record.getAddTodo())) { |
825 | - completeRecordAndEnd(record); | |
827 | + completeRecordAndEnd(record, false); | |
826 | 828 | } else { |
827 | 829 | followRecordService.removeById(record.getId()); |
828 | 830 | } | ... | ... |
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/follow/strategy/FollowStrategy.java
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 { |
104 | 104 | } |
105 | 105 | |
106 | 106 | @Override |
107 | - public void completeRecordAndEnd(FollowRecord record) { | |
107 | + public void completeRecordAndEnd(FollowRecord record, boolean needNew) { | |
108 | 108 | final Date followTime = DateUtil.localDateTime2Date(LocalDateTime.now()); |
109 | 109 | BackLogItemDTO dto = new BackLogItemDTO(record.getUserId(), getItemCode(record.getType()), String.valueOf(record.getId()), followTime, record.getShopId()); |
110 | 110 | if (Boolean.FALSE.equals(record.getOutTime()) && Objects.isNull(record.getFollowTime())) { | ... | ... |