|
|
|
@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
|
import com.baiye.constant.*;
|
|
|
|
|
import com.baiye.enums.ClueStageEnum;
|
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
@ -22,6 +21,7 @@ import com.baiye.module.service.CompanyService;
|
|
|
|
|
import com.baiye.module.service.dto.ClueRecordCriteria;
|
|
|
|
|
import com.baiye.task.ClueBackupsTask;
|
|
|
|
|
import com.baiye.util.*;
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
@ -31,7 +31,6 @@ import org.springframework.data.domain.Pageable;
|
|
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.math.BigInteger;
|
|
|
|
@ -1022,37 +1021,82 @@ public class ClueServiceImpl implements ClueService {
|
|
|
|
|
@Override
|
|
|
|
|
public void saveClue(List<String> tagList, List<String> phoneList, Long taskId, Long userId, Integer num) {
|
|
|
|
|
if (CollUtil.isNotEmpty(phoneList)) {
|
|
|
|
|
int clueNumber = DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
|
for (int i = 0; i < phoneList.size(); i++) {
|
|
|
|
|
String phone = phoneList.get(i);
|
|
|
|
|
if (StringUtils.isNotBlank(phone)) {
|
|
|
|
|
Boolean checkPhone = MobileUtil.checkPhone(phone);
|
|
|
|
|
if (Boolean.FALSE.equals(checkPhone)) {
|
|
|
|
|
log.error("============== the exchange phone as {} =====================", phone);
|
|
|
|
|
continue;
|
|
|
|
|
// 查询是否自动分配
|
|
|
|
|
CommonResponse<DynamicTaskDistributionDTO>
|
|
|
|
|
response = taskClient.findTaskDistribution(taskId);
|
|
|
|
|
if (response.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
DynamicTaskDistributionDTO responseData = response.getData();
|
|
|
|
|
// 开启了自动分配
|
|
|
|
|
if (ObjectUtil.isNotNull(responseData.getIsOpen()) &&
|
|
|
|
|
responseData.getIsOpen() == DefaultNumberConstants.ONE_NUMBER) {
|
|
|
|
|
List<DynamicTaskDistributionUserDTO> dtoList
|
|
|
|
|
= responseData.getDynamicTaskDistributionUserDTOS();
|
|
|
|
|
if (CollUtil.isNotEmpty(dtoList)) {
|
|
|
|
|
DistributeDTO distributeDTO = new DistributeDTO();
|
|
|
|
|
// 获取用户分配的资源
|
|
|
|
|
List<Long> userIdList = Lists.newArrayList();
|
|
|
|
|
List<Double> weights = Lists.newArrayList();
|
|
|
|
|
dtoList.forEach(dto -> {
|
|
|
|
|
userIdList.add(dto.getId());
|
|
|
|
|
weights.add(Double.valueOf(dto.getRatio()));
|
|
|
|
|
});
|
|
|
|
|
List<Long> longList = phoneList.stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
|
|
|
|
|
int sum = dtoList.stream().mapToInt(DynamicTaskDistributionUserDTO::getRatio).sum();
|
|
|
|
|
// 比率分配数据
|
|
|
|
|
distributeDTO.setIsWeight(sum == DefaultNumberConstants.ONE_HUNDRED);
|
|
|
|
|
distributeDTO.setResourceList(longList);
|
|
|
|
|
distributeDTO.setDeptIds(userIdList);
|
|
|
|
|
distributeDTO.setWeights(weights);
|
|
|
|
|
// 发送请求分配数据
|
|
|
|
|
CommonResponse<List<DistributeResponseDTO>> distributeResponse = assignDataClient.dataDistribution(distributeDTO);
|
|
|
|
|
if (distributeResponse.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
for (DistributeResponseDTO data : distributeResponse.getData()) {
|
|
|
|
|
// 判断是否包含数据
|
|
|
|
|
if (CollUtil.isNotEmpty(data.getResponseList())) {
|
|
|
|
|
phoneList = data.getResponseList().stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
this.saveClueTalk(phoneList, tagList, taskId, userId, num, data.getDeptId(), DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Clue clue = new Clue();
|
|
|
|
|
clue.setNid(phone);
|
|
|
|
|
clue.setCreateBy(userId);
|
|
|
|
|
clue.setCastInfo(tagList.get(i));
|
|
|
|
|
clue.setOrigin(DefaultNumberConstants.SIX_NUMBER);
|
|
|
|
|
clue.setIsEncryption(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
Clue save = clueRepository.save(clue);
|
|
|
|
|
|
|
|
|
|
ClueTalk clueTalk = new ClueTalk(save.getId(), taskId, 0, 0, 0, 0, num, new Date());
|
|
|
|
|
clueTalkRepository.save(clueTalk);
|
|
|
|
|
clueNumber++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (clueNumber > DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
log.info("================= the clueNumber as {} =================", clueNumber);
|
|
|
|
|
Company company = companyService.findByUserId(userId);
|
|
|
|
|
if (ObjectUtil.isNotNull(company)) {
|
|
|
|
|
companyService.updateBalanceByUserId(clueNumber, company);
|
|
|
|
|
this.saveClueTalk(phoneList, tagList, taskId, userId, num, null, DefaultNumberConstants.ZERO_NUMBER);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void saveClueTalk(List<String> responseList, List<String> tagList, Long taskId, Long userId, Integer num, Long memberId, Integer memberStatus) {
|
|
|
|
|
|
|
|
|
|
int clueNumber = DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
|
for (int i = 0; i < responseList.size(); i++) {
|
|
|
|
|
String phone = responseList.get(i);
|
|
|
|
|
if (StringUtils.isNotBlank(phone)) {
|
|
|
|
|
Boolean checkPhone = MobileUtil.checkPhone(phone);
|
|
|
|
|
if (Boolean.FALSE.equals(checkPhone)) {
|
|
|
|
|
log.error("============== the exchange phone as {} =====================", phone);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
Clue clue = new Clue();
|
|
|
|
|
clue.setNid(phone);
|
|
|
|
|
clue.setCreateBy(userId);
|
|
|
|
|
clue.setCastInfo(tagList.get(i));
|
|
|
|
|
clue.setOrigin(DefaultNumberConstants.SIX_NUMBER);
|
|
|
|
|
clue.setIsEncryption(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
Clue save = clueRepository.save(clue);
|
|
|
|
|
ClueTalk clueTalk = new ClueTalk(save.getId(), taskId, memberStatus, 0, 0, 0, num, new Date(), memberId);
|
|
|
|
|
clueTalkRepository.save(clueTalk);
|
|
|
|
|
clueNumber++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (clueNumber > DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
log.info("================= the clueNumber as {} =================", clueNumber);
|
|
|
|
|
Company company = companyService.findByUserId(userId);
|
|
|
|
|
if (ObjectUtil.isNotNull(company)) {
|
|
|
|
|
companyService.updateBalanceByUserId(clueNumber, company);
|
|
|
|
|
}
|
|
|
|
|
log.info("================= save clue size as {} =================", phoneList.size());
|
|
|
|
|
}
|
|
|
|
|
log.info("================= save clue size as {} =================", responseList.size());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|