|
|
@ -11,6 +11,7 @@ import com.baiye.modules.system.domain.*;
|
|
|
|
import com.baiye.modules.system.repository.*;
|
|
|
|
import com.baiye.modules.system.repository.*;
|
|
|
|
import com.baiye.modules.system.service.OrganizeService;
|
|
|
|
import com.baiye.modules.system.service.OrganizeService;
|
|
|
|
import com.baiye.modules.system.service.RoleService;
|
|
|
|
import com.baiye.modules.system.service.RoleService;
|
|
|
|
|
|
|
|
import com.baiye.modules.system.service.UserMessageService;
|
|
|
|
import com.baiye.modules.system.service.UserService;
|
|
|
|
import com.baiye.modules.system.service.UserService;
|
|
|
|
import com.baiye.modules.system.service.dto.*;
|
|
|
|
import com.baiye.modules.system.service.dto.*;
|
|
|
|
import com.baiye.modules.system.service.mapstruct.OrganizeMapper;
|
|
|
|
import com.baiye.modules.system.service.mapstruct.OrganizeMapper;
|
|
|
@ -18,10 +19,13 @@ import com.baiye.modules.system.service.mapstruct.OrganizeUserMapper;
|
|
|
|
import com.baiye.modules.system.service.mapstruct.TaskOrganizeMapper;
|
|
|
|
import com.baiye.modules.system.service.mapstruct.TaskOrganizeMapper;
|
|
|
|
import com.baiye.util.*;
|
|
|
|
import com.baiye.util.*;
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
|
|
|
import feign.FeignException;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.data.domain.Page;
|
|
|
|
import org.springframework.data.domain.Page;
|
|
|
|
|
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
|
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@ -29,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
@Service
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
@RequiredArgsConstructor
|
|
|
@ -48,6 +53,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
private final TaskOrganizeMapper taskOrganizeMapper;
|
|
|
|
private final TaskOrganizeMapper taskOrganizeMapper;
|
|
|
|
private final RoleService roleService;
|
|
|
|
private final RoleService roleService;
|
|
|
|
private final RedisUtils redisUtils;
|
|
|
|
private final RedisUtils redisUtils;
|
|
|
|
|
|
|
|
private final UserMessageService userMessageService;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 新增小组
|
|
|
|
* 新增小组
|
|
|
@ -210,6 +216,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
public ResponseEntity<Object> saveOrganizeDistribution(OrganizeSaveDTO organizeSaveDTO) {
|
|
|
|
public ResponseEntity<Object> saveOrganizeDistribution(OrganizeSaveDTO organizeSaveDTO) {
|
|
|
|
|
|
|
|
List<Long> userIdList = new ArrayList<>();
|
|
|
|
List<Long> organizeIdList = new ArrayList<>();
|
|
|
|
List<Long> organizeIdList = new ArrayList<>();
|
|
|
|
List<Double> weights = new ArrayList<>();
|
|
|
|
List<Double> weights = new ArrayList<>();
|
|
|
|
// 验证组是否重复
|
|
|
|
// 验证组是否重复
|
|
|
@ -243,6 +250,7 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
List<String> labelName = new ArrayList<>(new TreeSet<>(labelNameList));
|
|
|
|
List<String> labelName = new ArrayList<>(new TreeSet<>(labelNameList));
|
|
|
|
task.setBaseLabel(labelName);
|
|
|
|
task.setBaseLabel(labelName);
|
|
|
|
task.setIsDistribution(1);
|
|
|
|
task.setIsDistribution(1);
|
|
|
|
|
|
|
|
task.setUpdateTime(new Date());
|
|
|
|
taskRepository.save(task);
|
|
|
|
taskRepository.save(task);
|
|
|
|
// 分配任务引擎
|
|
|
|
// 分配任务引擎
|
|
|
|
DistributeDTO distributeDTO = new DistributeDTO();
|
|
|
|
DistributeDTO distributeDTO = new DistributeDTO();
|
|
|
@ -250,11 +258,16 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
distributeDTO.setResourceList(clueList);
|
|
|
|
distributeDTO.setResourceList(clueList);
|
|
|
|
List<DistributeResponseDTO> data;
|
|
|
|
List<DistributeResponseDTO> data;
|
|
|
|
distributeDTO.setWeights(weights);
|
|
|
|
distributeDTO.setWeights(weights);
|
|
|
|
|
|
|
|
distributeDTO.setIsWeight(true);
|
|
|
|
data = assignDataClient.dataDistribution(distributeDTO).getData();
|
|
|
|
data = assignDataClient.dataDistribution(distributeDTO).getData();
|
|
|
|
// 线索更新
|
|
|
|
// 线索更新
|
|
|
|
if (data != null && data.size() > 0) {
|
|
|
|
if (data != null && data.size() > 0) {
|
|
|
|
int index = 0;
|
|
|
|
int index = 0;
|
|
|
|
for (DistributeResponseDTO distributeResponseDTO : data) {
|
|
|
|
for (DistributeResponseDTO distributeResponseDTO : data) {
|
|
|
|
|
|
|
|
if (distributeResponseDTO.getResponseList().size() <= 0 ){
|
|
|
|
|
|
|
|
String organizeName = organizeRepository.findOrganizeById(distributeResponseDTO.getDeptId()).getOrganizeName();
|
|
|
|
|
|
|
|
throw new BadRequestException(organizeName + "比例过低,分配数不低于0");
|
|
|
|
|
|
|
|
}
|
|
|
|
sourceClueClient.batchUpdateOrganize(distributeResponseDTO);
|
|
|
|
sourceClueClient.batchUpdateOrganize(distributeResponseDTO);
|
|
|
|
// 添加小组-任务关联信息
|
|
|
|
// 添加小组-任务关联信息
|
|
|
|
int organizeTaskNum = distributeResponseDTO.getResponseList().size();
|
|
|
|
int organizeTaskNum = distributeResponseDTO.getResponseList().size();
|
|
|
@ -269,8 +282,17 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
taskOrganize.setRemark(organizeList.get(index).getRemark());
|
|
|
|
taskOrganize.setRemark(organizeList.get(index).getRemark());
|
|
|
|
index++;
|
|
|
|
index++;
|
|
|
|
taskOrganizeRepository.save(taskOrganize);
|
|
|
|
taskOrganizeRepository.save(taskOrganize);
|
|
|
|
|
|
|
|
// 发送通知的用户id
|
|
|
|
|
|
|
|
OrganizeUser organizeUser = organizeUserRepository.findByOrganizeIdAndIsLeader(distributeResponseDTO.getDeptId(), true);
|
|
|
|
|
|
|
|
userIdList.add(organizeUser.getUserId());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//发送通知
|
|
|
|
|
|
|
|
userIdList.add(SecurityUtils.getCurrentUserId());
|
|
|
|
|
|
|
|
MessageNotification messageNotification = new MessageNotification();
|
|
|
|
|
|
|
|
messageNotification.setMessageType(2);
|
|
|
|
|
|
|
|
messageNotification.setMessageContext(task.getTaskName() + "分配成功");
|
|
|
|
|
|
|
|
userMessageService.createUserMessage(userIdList,messageNotification);
|
|
|
|
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
|
|
|
|
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -343,11 +365,13 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public Map<String, Object> queryLeaderTaskList(TaskOrganizeQueryCriteria taskOrganizeQueryCriteria, Pageable pageable) {
|
|
|
|
public Map<String, Object> queryLeaderTaskList(TaskOrganizeQueryCriteria taskOrganizeQueryCriteria, Pageable pageable) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "updateTime"));
|
|
|
|
Long currentUserId = SecurityUtils.getCurrentUserId();
|
|
|
|
Long currentUserId = SecurityUtils.getCurrentUserId();
|
|
|
|
Organize organize = organizeRepository.findOrganize(currentUserId);
|
|
|
|
Organize organize = organizeRepository.findOrganize(currentUserId);
|
|
|
|
if (organize != null) {
|
|
|
|
if (organize != null) {
|
|
|
|
taskOrganizeQueryCriteria.setOrganizeId(organize.getId());
|
|
|
|
taskOrganizeQueryCriteria.setOrganizeId(organize.getId());
|
|
|
|
Page<TaskOrganize> page = taskOrganizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskOrganizeQueryCriteria, criteriaBuilder), pageable);
|
|
|
|
taskOrganizeQueryCriteria.setOrganizeTaskNum(1);
|
|
|
|
|
|
|
|
Page<TaskOrganize> page = taskOrganizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskOrganizeQueryCriteria, criteriaBuilder), pageRequest);
|
|
|
|
Page<TaskOrganizeDto> taskOrganizeDtos = page.map(taskOrganizeMapper::toDto);
|
|
|
|
Page<TaskOrganizeDto> taskOrganizeDtos = page.map(taskOrganizeMapper::toDto);
|
|
|
|
for (TaskOrganizeDto taskOrganizeDto : taskOrganizeDtos) {
|
|
|
|
for (TaskOrganizeDto taskOrganizeDto : taskOrganizeDtos) {
|
|
|
|
Task task = taskRepository.findById(taskOrganizeDto.getTaskId()).orElseGet(Task::new);
|
|
|
|
Task task = taskRepository.findById(taskOrganizeDto.getTaskId()).orElseGet(Task::new);
|
|
|
@ -387,18 +411,31 @@ public class OrganizeServiceImpl implements OrganizeService {
|
|
|
|
clueQueryCriteria.setOrganizeId(organizeId);
|
|
|
|
clueQueryCriteria.setOrganizeId(organizeId);
|
|
|
|
clueQueryCriteria.setUserIds(userIds);
|
|
|
|
clueQueryCriteria.setUserIds(userIds);
|
|
|
|
clueQueryCriteria.setTaskId(taskId);
|
|
|
|
clueQueryCriteria.setTaskId(taskId);
|
|
|
|
sourceClueClient.queryOrganizeIdList(clueQueryCriteria);
|
|
|
|
ResponseEntity<Long> rse = sourceClueClient.queryOrganizeIdList(clueQueryCriteria);
|
|
|
|
|
|
|
|
if (rse.getBody() != null) {
|
|
|
|
|
|
|
|
Long userId = rse.getBody();
|
|
|
|
|
|
|
|
UserDto user = userService.findById(userId);
|
|
|
|
|
|
|
|
throw new BadRequestException(user.getNickName() + "比例过低,分配数量不能低于0");
|
|
|
|
|
|
|
|
}
|
|
|
|
//修改小组任务信息
|
|
|
|
//修改小组任务信息
|
|
|
|
TaskOrganize updateTaskOrganize = taskOrganizeRepository.findByOrganizeIdAndTaskId(organizeId, taskId);
|
|
|
|
TaskOrganize updateTaskOrganize = taskOrganizeRepository.findByOrganizeIdAndTaskId(organizeId, taskId);
|
|
|
|
updateTaskOrganize.setTaskStatus(1);
|
|
|
|
updateTaskOrganize.setTaskStatus(1);
|
|
|
|
updateTaskOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime());
|
|
|
|
updateTaskOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime());
|
|
|
|
updateTaskOrganize.setEndTime(organizeMemberDistributionDTO.getEndTime());
|
|
|
|
updateTaskOrganize.setEndTime(organizeMemberDistributionDTO.getEndTime());
|
|
|
|
|
|
|
|
updateTaskOrganize.setUpdateTime(new Date());
|
|
|
|
if (organizeMemberDistributionDTO.getSourceLabel() != null) {
|
|
|
|
if (organizeMemberDistributionDTO.getSourceLabel() != null) {
|
|
|
|
List<String> sourceLabelList = organizeMemberDistributionDTO.getSourceLabel();
|
|
|
|
List<String> sourceLabelList = organizeMemberDistributionDTO.getSourceLabel();
|
|
|
|
List<String> sourceLabe = new ArrayList<>(new TreeSet<>(sourceLabelList));
|
|
|
|
List<String> sourceLabe = new ArrayList<>(new TreeSet<>(sourceLabelList));
|
|
|
|
updateTaskOrganize.setOrganizeLabel(sourceLabe);
|
|
|
|
updateTaskOrganize.setOrganizeLabel(sourceLabe);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
taskOrganizeRepository.save(updateTaskOrganize);
|
|
|
|
taskOrganizeRepository.save(updateTaskOrganize);
|
|
|
|
|
|
|
|
//发送通知
|
|
|
|
|
|
|
|
userIds.add(SecurityUtils.getCurrentUserId());
|
|
|
|
|
|
|
|
List<Long> userIdList = new ArrayList<>(userIds);
|
|
|
|
|
|
|
|
MessageNotification messageNotification = new MessageNotification();
|
|
|
|
|
|
|
|
messageNotification.setMessageType(2);
|
|
|
|
|
|
|
|
messageNotification.setMessageContext(updateTaskOrganize.getOrganizeTaskName() + "分配成功");
|
|
|
|
|
|
|
|
userMessageService.createUserMessage(userIdList,messageNotification);
|
|
|
|
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
|
|
|
|
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|