|
|
|
@ -3,6 +3,7 @@ package com.baiye.modules.platform.service.impl;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import com.baiye.common.CommonLog;
|
|
|
|
|
import com.baiye.constant.DefaultNumberConstants;
|
|
|
|
|
import com.baiye.constant.RoleNumberConstants;
|
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
@ -30,7 +31,6 @@ import com.baiye.modules.telemarkting.service.ExtensionNumberService;
|
|
|
|
|
import com.baiye.util.*;
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
|
|
import org.springframework.data.domain.Page;
|
|
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
|
@ -46,7 +46,6 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
|
|
|
|
|
private final OrganizeRepository organizeRepository;
|
|
|
|
@ -78,12 +77,14 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
Set<Long> organizeUserIds = findOrganizeUserIds();
|
|
|
|
|
for (Organize organize : organizeList) {
|
|
|
|
|
if (organizeUserIds.contains(organize.getUserId())) {
|
|
|
|
|
CommonLog.error("用户已经分配到组");
|
|
|
|
|
throw new BadRequestException("用户已经分配到组");
|
|
|
|
|
}
|
|
|
|
|
organize.setCreateBy(SecurityUtils.getCurrentUserId());
|
|
|
|
|
Organize saveOrganize = organizeRepository.save(organize);
|
|
|
|
|
//添加分机号
|
|
|
|
|
if (organize.getCallMode() == 1) {
|
|
|
|
|
CommonLog.infoNewTraceId("添加分机号");
|
|
|
|
|
extensionNumberService.assignExtensionNum(saveOrganize.getId(), organize.getUserId());
|
|
|
|
|
}
|
|
|
|
|
// 添加小组成员信息
|
|
|
|
@ -91,11 +92,13 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
organizeUser.setOrganizeId(saveOrganize.getId());
|
|
|
|
|
Long roleId = Collections.min(roleService.findByUsersId(organize.getUserId()).stream().map(RoleSmallDto::getId).collect(Collectors.toList()));
|
|
|
|
|
if (!roleId.equals(RoleNumberConstants.MINUS_NINE_NUMBER)) {
|
|
|
|
|
CommonLog.error("指定组长不是组长角色");
|
|
|
|
|
throw new BadRequestException("指定组长必须是组长角色");
|
|
|
|
|
}
|
|
|
|
|
organizeUser.setUserId(organize.getUserId());
|
|
|
|
|
organizeUser.setIsLeader(true);
|
|
|
|
|
organizeUser.setCreateBy(SecurityUtils.getCurrentUserId());
|
|
|
|
|
CommonLog.infoNewTraceId("添加小组成员信息");
|
|
|
|
|
organizeUserRepository.save(organizeUser);
|
|
|
|
|
// 分配任务时创建组调用返回小组ID
|
|
|
|
|
saveUserId = saveOrganize.getId();
|
|
|
|
@ -116,15 +119,18 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
if (!organizeUser.getUserId().equals(organize.getUserId())) {
|
|
|
|
|
Long roleId = Collections.min(roleService.findByUsersId(organize.getUserId()).stream().map(RoleSmallDto::getId).collect(Collectors.toList()));
|
|
|
|
|
if (!roleId.equals(RoleNumberConstants.MINUS_NINE_NUMBER)) {
|
|
|
|
|
CommonLog.error("选择的组长不是组长角色用户");
|
|
|
|
|
throw new BadRequestException("请选择组长角色的用户");
|
|
|
|
|
}
|
|
|
|
|
// 替换组长-资源替换
|
|
|
|
|
CommonLog.infoNewTraceId("修改组长资源");
|
|
|
|
|
ResponseEntity<Object> response = sourceClueClient.updateMember(organizeUser.getUserId(), organize.getUserId());
|
|
|
|
|
if (response.getStatusCode().value() != 200) throw new BadRequestException("组长修改失败");
|
|
|
|
|
extensionUserRepository.updateByMember(organizeUser.getUserId(), organize.getUserId());
|
|
|
|
|
}
|
|
|
|
|
//添加(删除)分机号
|
|
|
|
|
if (organize.getCallMode() != null && !organize.getCallMode().equals(updateOrganize.getCallMode())) {
|
|
|
|
|
CommonLog.infoNewTraceId("操作分机号");
|
|
|
|
|
List<OrganizeUser> organizeList = organizeUserRepository.findByOrganizeId(organize.getId());
|
|
|
|
|
if (organize.getCallMode() == 1) {
|
|
|
|
|
organizeList.forEach(oe -> extensionNumberService.assignExtensionNum(oe.getOrganizeId(), oe.getUserId()));
|
|
|
|
@ -132,6 +138,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
extensionNumberService.unbindExtension(updateOrganize.getId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
CommonLog.infoNewTraceId("修改组信息");
|
|
|
|
|
if (organize.getOrganizeName() != null) {
|
|
|
|
|
updateOrganize.setOrganizeName(organize.getOrganizeName());
|
|
|
|
|
updateOrganize.setCallMode(organize.getCallMode());
|
|
|
|
@ -146,6 +153,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
organizeRepository.save(updateOrganize);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CommonLog.infoNewTraceId("修改组用户信息");
|
|
|
|
|
if (organize.getUserId() != null) {
|
|
|
|
|
// 修改所有组员的父ID(组长用户ID)
|
|
|
|
|
organizeUserRepository.updateUserId(organize.getId(), organize.getUserId());
|
|
|
|
@ -181,6 +189,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
Set<Long> organizeUserIds = findOrganizeUserIds();
|
|
|
|
|
OrganizeUser organizeUserByUserId = organizeUserRepository.findByUserId(currentUserId);
|
|
|
|
|
if (organizeUserByUserId == null) {
|
|
|
|
|
CommonLog.error("用户还未分配到组内");
|
|
|
|
|
throw new BadRequestException("用户未分配到组,请创建小组");
|
|
|
|
|
}
|
|
|
|
|
Long organizeId = organizeUserByUserId.getOrganizeId();
|
|
|
|
@ -211,8 +220,10 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
// 替换组员
|
|
|
|
|
organizeUserRepository.updateUser(userId, replaceUserId);
|
|
|
|
|
// 组员资源替换
|
|
|
|
|
CommonLog.info("替换组员资源");
|
|
|
|
|
sourceClueClient.updateMember(userId, replaceUserId);
|
|
|
|
|
} else {
|
|
|
|
|
CommonLog.info("重新分配资源");
|
|
|
|
|
// 删除组员
|
|
|
|
|
organizeUserRepository.deleteByUserId(userId);
|
|
|
|
|
// 不替换组员操作(直接删除),所属资源再次分配给所有组员
|
|
|
|
@ -261,6 +272,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
organizeUserAll.forEach(organizeUser -> userList.add(organizeUser.getUserId()));
|
|
|
|
|
organizeSaveDTO.getOrganizeList().forEach(o -> {
|
|
|
|
|
if (o.getId() == null && userList.contains(o.getUserId())) {
|
|
|
|
|
CommonLog.error("组长重复");
|
|
|
|
|
throw new BadRequestException("组长不能重复");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
@ -294,6 +306,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
if (CollUtil.isNotEmpty(labelList)) {
|
|
|
|
|
task.setBaseLabel(labelList);
|
|
|
|
|
}
|
|
|
|
|
CommonLog.info("修改任务");
|
|
|
|
|
taskRepository.save(task);
|
|
|
|
|
// 分配任务引擎
|
|
|
|
|
DistributeDTO distributeDTO = new DistributeDTO();
|
|
|
|
@ -302,12 +315,14 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
List<DistributeResponseDTO> data;
|
|
|
|
|
distributeDTO.setWeights(weights);
|
|
|
|
|
distributeDTO.setIsWeight(true);
|
|
|
|
|
CommonLog.infoNewTraceId("调用分配引擎,查询分配线索");
|
|
|
|
|
CommonResponse<List<DistributeResponseDTO>> commonResponse = assignDataClient.dataDistribution(distributeDTO);
|
|
|
|
|
if (commonResponse.getStatus() == 1) {
|
|
|
|
|
throw new BadRequestException(commonResponse.getMsg());
|
|
|
|
|
}
|
|
|
|
|
data = commonResponse.getData();
|
|
|
|
|
// 线索更新
|
|
|
|
|
CommonLog.infoNewTraceId("线索更新");
|
|
|
|
|
if (data != null && data.size() > 0) {
|
|
|
|
|
int index = 0;
|
|
|
|
|
for (DistributeResponseDTO distributeResponseDTO : data) {
|
|
|
|
@ -499,12 +514,14 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
clueQueryCriteria.setOrganizeId(organizeId);
|
|
|
|
|
clueQueryCriteria.setUserIds(userIds);
|
|
|
|
|
clueQueryCriteria.setTaskId(taskId);
|
|
|
|
|
CommonLog.infoNewTraceId("调用服务,分配资源");
|
|
|
|
|
ResponseEntity<String> rse = sourceClueClient.queryOrganizeIdList(clueQueryCriteria);
|
|
|
|
|
if (rse.getBody() != null && !rse.getBody().equals("success")) {
|
|
|
|
|
UserDto user = userService.findById(Long.parseLong(rse.getBody()));
|
|
|
|
|
throw new BadRequestException(user.getNickName() + "比例过低,分配数量不能低于0");
|
|
|
|
|
}
|
|
|
|
|
//修改小组任务信息
|
|
|
|
|
CommonLog.infoNewTraceId("修改小组任务信息");
|
|
|
|
|
TaskOrganize updateTaskOrganize = taskOrganizeRepository.findByOrganizeIdAndTaskId(organizeId, taskId);
|
|
|
|
|
updateTaskOrganize.setTaskStatus(1);
|
|
|
|
|
updateTaskOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime());
|
|
|
|
@ -779,8 +796,8 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
} else {
|
|
|
|
|
//2、替换人是组员
|
|
|
|
|
List<OrganizeUser> organizeUserList = organizeUserRepository.findByUserIdIn(ListUtil.of(userId, replaceUserId));
|
|
|
|
|
OrganizeUser userOrganizeUser = organizeUserList.get(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
OrganizeUser repOrganizeUser = organizeUserList.get(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
OrganizeUser userOrganizeUser = organizeUserList.get(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
OrganizeUser repOrganizeUser = organizeUserList.get(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
userOrganizeUser.setUserId(replaceUserId);
|
|
|
|
|
repOrganizeUser.setUserId(userId);
|
|
|
|
|
organizeUserRepository.saveAll(ListUtil.of(userOrganizeUser, repOrganizeUser));
|
|
|
|
@ -816,6 +833,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 分机号变动
|
|
|
|
|
CommonLog.infoNewTraceId("分机号变动");
|
|
|
|
|
extensionNumberService.extensionNumberConvert(userId, replaceUserId, organizeId);
|
|
|
|
|
// 资源所属组相互转换
|
|
|
|
|
Map<Long, Long> map = new HashMap<>();
|
|
|
|
@ -824,6 +842,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
|
OrganizeUser organizeUser = organizeUserRepository.findByUserId(replaceUserId);
|
|
|
|
|
map.put(replaceUserId, organizeUser.getOrganizeId());
|
|
|
|
|
}
|
|
|
|
|
CommonLog.infoNewTraceId("资源所属组相互转换");
|
|
|
|
|
ResponseEntity<Object> response = sourceClueClient.updateClueOrganize(map);
|
|
|
|
|
if (response.getStatusCode().value() != 200) throw new BadRequestException("修改失败");
|
|
|
|
|
}
|
|
|
|
|