|
|
|
@ -1,18 +1,18 @@
|
|
|
|
|
package com.baiye.modules.system.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import com.baiye.constant.ClueTypeConstants;
|
|
|
|
|
import com.baiye.constant.DefaultNumberConstants;
|
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
|
import com.baiye.feign.SourceClueClient;
|
|
|
|
|
import com.baiye.http.CommonResponse;
|
|
|
|
|
import com.baiye.model.dto.*;
|
|
|
|
|
import com.baiye.modules.system.domain.*;
|
|
|
|
|
import com.baiye.modules.system.httpRequest.AdBackRequestApi;
|
|
|
|
|
import com.baiye.modules.system.repository.OrganizeUserRepository;
|
|
|
|
|
import com.baiye.modules.system.repository.TaskOrganizeRepository;
|
|
|
|
|
import com.baiye.modules.system.repository.TaskRepository;
|
|
|
|
|
import com.baiye.modules.system.repository.TaskUserDistributionRepository;
|
|
|
|
|
import com.baiye.modules.system.repository.*;
|
|
|
|
|
import com.baiye.modules.system.service.LabelOrganizeService;
|
|
|
|
|
import com.baiye.modules.system.service.LabelService;
|
|
|
|
|
import com.baiye.modules.system.service.TaskService;
|
|
|
|
@ -55,6 +55,7 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
private final LabelService labelService;
|
|
|
|
|
private final TaskUserDistributionRepository taskUserDistributionRepository;
|
|
|
|
|
private final AdBackRequestApi adBackRequestApi;
|
|
|
|
|
private final TaskTagRepository taskTagRepository;
|
|
|
|
|
@Value("${snowflake.workerId}")
|
|
|
|
|
private int workerId;
|
|
|
|
|
@Value("${snowflake.datacenterId}")
|
|
|
|
@ -96,13 +97,87 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
* @param taskTagDto
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void saveAdBackTask(TaskTagDto taskTagDto) {
|
|
|
|
|
Long taskId = createTask(taskTagDto.getUserId(), taskTagDto.getTaskName(), DefaultNumberConstants.FOUR_NUMBER, taskTagDto.getLabelOrganizeId(), taskTagDto
|
|
|
|
|
public CommonResponse<Object> saveAdBackTask(TaskTagDto taskTagDto) {
|
|
|
|
|
long taskId = IdUtil.getSnowflake(workerId, datacenterId).nextId();
|
|
|
|
|
List<String> tag = createTag(taskId, taskTagDto.getUserId(), taskTagDto.getTagStr());
|
|
|
|
|
if (CollUtil.isNotEmpty(tag)) {
|
|
|
|
|
return CommonResponse.createBySuccess(tag);
|
|
|
|
|
}
|
|
|
|
|
createTask(taskId, taskTagDto.getUserId(), taskTagDto.getTaskName(), DefaultNumberConstants.FOUR_NUMBER, taskTagDto.getLabelOrganizeId(), taskTagDto
|
|
|
|
|
.getRemark());
|
|
|
|
|
//推送到ad-bask
|
|
|
|
|
// 推送到adbask
|
|
|
|
|
adBackRequestApi.sendTag(taskId, taskTagDto.getUserId(), taskTagDto.getTagStr());
|
|
|
|
|
return CommonResponse.createBySuccess();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public TaskTagDto queryDmpTask(Long taskId) {
|
|
|
|
|
Task task = taskRepository.findById(taskId).orElseGet(Task::new);
|
|
|
|
|
TaskTagDto taskTagDto = new TaskTagDto();
|
|
|
|
|
BeanUtil.copyProperties(task, taskTagDto);
|
|
|
|
|
TaskTag taskTagByTaskId = taskTagRepository.findTaskTagByTaskId(taskId);
|
|
|
|
|
if (ObjectUtil.isNotEmpty(taskTagByTaskId)) {
|
|
|
|
|
taskTagDto.setTagStr(taskTagByTaskId.getTag());
|
|
|
|
|
}
|
|
|
|
|
return taskTagDto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public CommonResponse<Object> updateDmpTask(TaskTagDto taskTagDto) {
|
|
|
|
|
if (ObjectUtil.isNull(taskTagDto) || taskTagDto.getTaskId() == null) {
|
|
|
|
|
return CommonResponse.createByErrorMessage("任务id不能为空");
|
|
|
|
|
}
|
|
|
|
|
List<String> tag = createTag(taskTagDto.getTaskId(), taskTagDto.getUserId(), taskTagDto.getTagStr());
|
|
|
|
|
if (CollUtil.isNotEmpty(tag)) {
|
|
|
|
|
return CommonResponse.createBySuccess(tag);
|
|
|
|
|
}
|
|
|
|
|
adBackRequestApi.sendTag(taskTagDto.getTaskId(), taskTagDto.getUserId(), taskTagDto.getTagStr());
|
|
|
|
|
return CommonResponse.createBySuccess();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<String> createTag(Long taskId, Long userId, List<String> tags) {
|
|
|
|
|
|
|
|
|
|
//一个公司中已经存在的tag
|
|
|
|
|
List<String> tagAll = new ArrayList<>();
|
|
|
|
|
List<TaskTag> taskTags = taskTagRepository.findTaskTagByUserId(userId);
|
|
|
|
|
tags = tags.stream().distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
for (TaskTag taskTag : taskTags) {
|
|
|
|
|
tagAll.addAll(taskTag.getTag());
|
|
|
|
|
}
|
|
|
|
|
List<String> differenceList = tagAll.stream().filter(tags::contains).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(differenceList)) {
|
|
|
|
|
return differenceList;
|
|
|
|
|
}
|
|
|
|
|
TaskTag taskTag = taskTagRepository.findTaskTagByTaskId(taskId);
|
|
|
|
|
|
|
|
|
|
if (ObjectUtil.isNull(taskTag)) {
|
|
|
|
|
taskTag = new TaskTag();
|
|
|
|
|
taskTag.setUserId(userId);
|
|
|
|
|
taskTag.setTaskId(taskId);
|
|
|
|
|
}
|
|
|
|
|
taskTag.setTag(tags);
|
|
|
|
|
taskTagRepository.save(taskTag);
|
|
|
|
|
return new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void createTask(Long taskId, Long id, String taskName, Integer isForm, Long labelOrganizeId, String remark) {
|
|
|
|
|
Task task = new Task();
|
|
|
|
|
task.setId(taskId);
|
|
|
|
|
task.setTaskName(taskName);
|
|
|
|
|
task.setIsEncryption(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
//设置默认值
|
|
|
|
|
task.setIsDistribution(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
task.setTaskType(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
task.setIsForm(isForm);
|
|
|
|
|
task.setCreateBy(id);
|
|
|
|
|
task.setRemark(remark);
|
|
|
|
|
taskRepository.save(task);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackOn = Exception.class)
|
|
|
|
|
public void addTaskDistribution(DynamicTaskDistributionDTO dynamicTaskDistributionDTO) {
|
|
|
|
@ -118,12 +193,12 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
taskUserDistributionRepository.deleteByTaskId(taskId);
|
|
|
|
|
}
|
|
|
|
|
taskRepository.save(task);
|
|
|
|
|
if (CollUtil.isNotEmpty(dynamicTaskDistributionUserDTOS)){
|
|
|
|
|
if (CollUtil.isNotEmpty(dynamicTaskDistributionUserDTOS)) {
|
|
|
|
|
int num = dynamicTaskDistributionUserDTOS.stream().mapToInt(DynamicTaskDistributionUserDTO::getRatio).sum();
|
|
|
|
|
// 总和是'0'就是开启了平均分配
|
|
|
|
|
if (num == DefaultNumberConstants.ONE_HUNDRED || num == DefaultNumberConstants.ZERO_NUMBER){
|
|
|
|
|
if (num == DefaultNumberConstants.ONE_HUNDRED || num == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
// 如果0就设置一个平均比率
|
|
|
|
|
if (num == DefaultNumberConstants.ZERO_NUMBER){
|
|
|
|
|
if (num == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
averageRatio(dynamicTaskDistributionUserDTOS);
|
|
|
|
|
}
|
|
|
|
|
List<TaskUserDistribution> list = new ArrayList<>();
|
|
|
|
@ -135,10 +210,10 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
list.add(taskUserDistribution);
|
|
|
|
|
}
|
|
|
|
|
taskUserDistributionRepository.saveAll(list);
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
throw new BadRequestException("错误,请总比例和等于100%");
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
if (isOpen == 1) {
|
|
|
|
|
throw new BadRequestException("请勾选人员,分配比率");
|
|
|
|
|
}
|
|
|
|
@ -165,32 +240,6 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
return dynamicTaskDistributionDTO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 在创建用户时 创建一个表单任动态务
|
|
|
|
|
*
|
|
|
|
|
* @param username
|
|
|
|
|
*/
|
|
|
|
|
private Long createTask(Long id, String username, Integer isForm, Long labelOrganizeId, String remark) {
|
|
|
|
|
Task task = new Task();
|
|
|
|
|
task.setId(IdUtil.getSnowflake(workerId, datacenterId).nextId());
|
|
|
|
|
task.setTaskName(username);
|
|
|
|
|
task.setIsEncryption(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
//设置默认值
|
|
|
|
|
task.setIsDistribution(DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
task.setTaskType(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
task.setIsForm(isForm);
|
|
|
|
|
task.setCreateBy(id);
|
|
|
|
|
// if (labelOrganizeId != null) {
|
|
|
|
|
// List<String> labelList = labelService.findLabelList(labelOrganizeId);
|
|
|
|
|
// if (CollUtil.isNotEmpty(labelList)) {
|
|
|
|
|
// task.setBaseLabel(labelList);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
task.setRemark(remark);
|
|
|
|
|
Task save = taskRepository.save(task);
|
|
|
|
|
return save.getId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* (分页)查询任务信息(默认查询列表)
|
|
|
|
|
*/
|
|
|
|
@ -255,8 +304,7 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
@Override
|
|
|
|
|
public Object list(TaskQueryCriteria taskQueryCriteria) {
|
|
|
|
|
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
|
|
|
|
|
List<TaskDto> taskDtos = taskMapper.toDto(taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder), sort));
|
|
|
|
|
return taskDtos;
|
|
|
|
|
return taskMapper.toDto(taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder), sort));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -359,7 +407,7 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
/**
|
|
|
|
|
* 平均分配比率
|
|
|
|
|
*/
|
|
|
|
|
public void averageRatio(List<DynamicTaskDistributionUserDTO> dynamicTaskDistributionUserDTOS){
|
|
|
|
|
public void averageRatio(List<DynamicTaskDistributionUserDTO> dynamicTaskDistributionUserDTOS) {
|
|
|
|
|
int size = dynamicTaskDistributionUserDTOS.size();
|
|
|
|
|
List<Integer> list = new ArrayList<>();
|
|
|
|
|
for (int i = 0; i < 100; i++) {
|
|
|
|
|