|
|
|
@ -63,6 +63,7 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
private final WeChatAddFriendClient weChatAddFriendClient;
|
|
|
|
|
private final OceanEngineClueIdRepository oceanEngineClueIdRepository;
|
|
|
|
|
private final ClueFailRecordRepository clueFailRecordRepository;
|
|
|
|
|
private final AssignDataClient assignDataClient;
|
|
|
|
|
private static SimpleDateFormat timeOne = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -75,14 +76,6 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
while (it.hasNext()) {
|
|
|
|
|
Clue clue = it.next();
|
|
|
|
|
if (StringUtils.isNotBlank(clue.getNid())) {
|
|
|
|
|
// 24位的nid解密,查询时要加*显示的线索
|
|
|
|
|
if (clue.getNid().length() == DefaultNumberConstants.TWENTY_FOUR) {
|
|
|
|
|
String str = DecryptPnoUtil.decryptPno(clue.getNid());
|
|
|
|
|
if (str != null) {
|
|
|
|
|
clue.setNid(str);
|
|
|
|
|
clue.setIsEncryption(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
boolean bool = MobileUtil.checkPhone(clue.getNid());
|
|
|
|
|
if (!bool) {
|
|
|
|
|
ClueFailRecord clueFailRecord = new ClueFailRecord();
|
|
|
|
@ -161,17 +154,16 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
public ResponseEntity<Object> queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) {
|
|
|
|
|
|
|
|
|
|
//查询此小组下的所有资源id
|
|
|
|
|
List<ClueMiddle> clueMiddleList = new ArrayList<>();
|
|
|
|
|
List<ClueMiddle> clueMiddleList;
|
|
|
|
|
//memberId不等空(组员替换重新分配替换资源下的资源)
|
|
|
|
|
if (clueQueryCriteria.getMemberId() != null) {
|
|
|
|
|
clueMiddleList = clueMiddleRepository.findByMemberId(clueQueryCriteria.getMemberId());
|
|
|
|
|
} else {
|
|
|
|
|
clueMiddleList = clueMiddleRepository.findByTaskIdAndOrganizeId(clueQueryCriteria.getTaskId(), clueQueryCriteria.getOrganizeId());
|
|
|
|
|
}
|
|
|
|
|
if (clueMiddleList.size() > 0) {
|
|
|
|
|
if (CollUtil.isNotEmpty(clueMiddleList)) {
|
|
|
|
|
// 所有的资源id
|
|
|
|
|
List<Long> clueIds = new ArrayList<>();
|
|
|
|
|
clueMiddleList.forEach(ct -> clueIds.add(ct.getClueId()));
|
|
|
|
|
List<Long> clueIds = clueMiddleList.stream().map(ClueMiddle::getClueId).collect(Collectors.toList());
|
|
|
|
|
//小组内资源分配
|
|
|
|
|
//Map<Long, List<Long>>:用户id -> 资源ID集合
|
|
|
|
|
List<Long> userIdList = new ArrayList<>(clueQueryCriteria.getUserIds());
|
|
|
|
@ -491,6 +483,7 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
String oneFileName = baseExcelListenerDto.getOneFileName();
|
|
|
|
|
Long taskId = baseExcelListenerDto.getTaskId();
|
|
|
|
|
Long userId = baseExcelListenerDto.getUserId();
|
|
|
|
|
Integer origin = baseExcelListenerDto.getOrigin();
|
|
|
|
|
Integer taskNum = clueMiddleRepository.findTaskNum(taskId);
|
|
|
|
|
if (taskNum == null || taskNum == 0) {
|
|
|
|
|
try {
|
|
|
|
@ -509,7 +502,12 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
task.setCreateBy(userId);
|
|
|
|
|
task.setTaskName(taskName);
|
|
|
|
|
task.setTotalNumber(taskNum);
|
|
|
|
|
task.setTaskType(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
if (origin == DefaultNumberConstants.SIX_NUMBER) {
|
|
|
|
|
task.setTaskType(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
task.setIsForm(DefaultNumberConstants.FIVE_NUMBER);
|
|
|
|
|
} else {
|
|
|
|
|
task.setTaskType(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
taskClient.saveTask(task);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
@ -628,6 +626,7 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
public void insertDynamicTask(DynamicTaskDto dynamicTaskDto) {
|
|
|
|
|
|
|
|
|
|
Long taskId = dynamicTaskDto.getTaskId();
|
|
|
|
|
String remark = dynamicTaskDto.getRemark();
|
|
|
|
|
boolean flag = false;
|
|
|
|
|
if (taskId == null) {
|
|
|
|
|
if (dynamicTaskDto.getWhichUserId() == null) {
|
|
|
|
@ -672,6 +671,7 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
clueMiddle.setClueStage(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
clueMiddle.setClueCallStatus(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
clueMiddle.setClueType(DefaultNumberConstants.TWO_NUMBER);
|
|
|
|
|
if (StringUtils.isNotBlank(remark)) clueMiddle.setRemark(remark);
|
|
|
|
|
clueMiddleRepository.save(clueMiddle);
|
|
|
|
|
//动态任务
|
|
|
|
|
if (dynamicTaskDto.getType() == FileConstant.FIVE_NUMBER) {
|
|
|
|
@ -731,6 +731,9 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void clueBackFlow(Long taskId, Long clueId, Long userId, Integer clueType) {
|
|
|
|
|
// 初始化线索加密字段
|
|
|
|
|
Clue clue = clueRepository.findById(clueId).orElseGet(Clue::new);
|
|
|
|
|
clue.setIsEncryption(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
ClueMiddle clueMiddle = clueMiddleRepository.findById(clueId).orElseGet(ClueMiddle::new);
|
|
|
|
|
//查看crm任务
|
|
|
|
|
TaskQueryCriteria taskQueryCriteria = new TaskQueryCriteria();
|
|
|
|
@ -769,6 +772,49 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
taskClient.updateTask(task);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void dynamicTaskDistribution(Long taskId) {
|
|
|
|
|
List<ClueMiddle> clueAll = clueMiddleRepository.findByTaskIdAndMemberStatus(taskId, DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
List<Long> clueIds = clueAll.stream().map(ClueMiddle::getClueId).collect(Collectors.toList());
|
|
|
|
|
CommonResponse<DynamicTaskDistributionDTO> response = taskClient.findTaskDistribution(taskId);
|
|
|
|
|
if (response.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
DynamicTaskDistributionDTO dynamicTaskDistributionDTO = response.getData();
|
|
|
|
|
// 开启了自动分配
|
|
|
|
|
if (dynamicTaskDistributionDTO.getIsOpen() == 1) {
|
|
|
|
|
List<DynamicTaskDistributionUserDTO> dynamicTaskDistributionUserDTOS = dynamicTaskDistributionDTO.getDynamicTaskDistributionUserDTOS();
|
|
|
|
|
if (CollUtil.isNotEmpty(dynamicTaskDistributionUserDTOS)) {
|
|
|
|
|
DistributeDTO distributeDTO = new DistributeDTO();
|
|
|
|
|
// 获取用户分配的资源
|
|
|
|
|
List<Long> userIdList = new ArrayList<>();
|
|
|
|
|
List<Double> weights = new ArrayList<>();
|
|
|
|
|
for (DynamicTaskDistributionUserDTO dynamicTaskDistributionUserDTO : dynamicTaskDistributionUserDTOS) {
|
|
|
|
|
userIdList.add(dynamicTaskDistributionUserDTO.getId());
|
|
|
|
|
weights.add(Double.valueOf(dynamicTaskDistributionUserDTO.getRatio()));
|
|
|
|
|
}
|
|
|
|
|
int num = dynamicTaskDistributionUserDTOS.stream().mapToInt(DynamicTaskDistributionUserDTO::getRatio).sum();
|
|
|
|
|
// 比率分配数据
|
|
|
|
|
if (num == DefaultNumberConstants.ONE_HUNDRED){
|
|
|
|
|
distributeDTO.setIsWeight(true);
|
|
|
|
|
}
|
|
|
|
|
// 平均分配数据
|
|
|
|
|
if (num == DefaultNumberConstants.ZERO_NUMBER){
|
|
|
|
|
distributeDTO.setIsWeight(false);
|
|
|
|
|
}
|
|
|
|
|
distributeDTO.setDeptIds(userIdList);
|
|
|
|
|
distributeDTO.setWeights(weights);
|
|
|
|
|
distributeDTO.setResourceList(clueIds);
|
|
|
|
|
CommonResponse<List<DistributeResponseDTO>> distributeResponse = assignDataClient.dataDistribution(distributeDTO);
|
|
|
|
|
if (distributeResponse.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
for (DistributeResponseDTO data : distributeResponse.getData()) {
|
|
|
|
|
clueMiddleRepository.updateMemberIdByClueIdIn(data.getResponseList(), data.getDeptId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<HashMap<String, Object>> getOrganizeInfo(String startTime, String endTime, List<Long> organizeIds) {
|
|
|
|
|
List<ClueMiddle> clueMiddles = clueMiddleRepository.queryAllByTimeAndorganizeIds(startTime, endTime, organizeIds);
|
|
|
|
|