dmp任务修改tag值

master
wujingtao 2 years ago
parent 410efaa035
commit 45f3ef445b

@ -82,11 +82,11 @@ public class CallCostServiceImpl implements CallCostService {
//查询套餐时间范围内 通话记录
List<UserReport> list = userReportRepository.queryAllByTimeAndId(DateUtil.formatDateTime(info.getBeginTime()), DateUtil.formatDateTime(info.getEndTime()), userId);
if (CollUtil.isEmpty(list)) {
log.info(" 用户 {} ,没有通话记录", userId);
continue;
}
//s->m
long durationTotal = list.stream().mapToLong(UserReport::getBreatheTotalDuration).sum() / 60;
log.info(" 用户 {},通话总时长 {}", userId, durationTotal);
//今天的通话记录
List<UserReport> userReports = list.stream().filter(c -> DateTimeUtil.betweenByDay(c.getCreateTime(), DateUtil.date())).collect(Collectors.toList());
@ -94,11 +94,11 @@ public class CallCostServiceImpl implements CallCostService {
if (durationTotal > callDuration && userReports.size() > 0) {
//今天得通话时长(s->m)
long durationToday = userReports.get(0).getBreatheTotalDuration() / 60;
log.info(" 用户 {},今日通话时长 {}", userId, durationToday);
//账户余额
CompanyDto companyById = companyService.findCompanyById(companyId);
int callMode = organizeService.getOrganizeByUserId(userId).getCallMode();
//获取呼叫单价
PayFatherTemplate payFatherTemplate = payFatherTemplateRepository.findById(payTemplate.getFatherTemplateId()).orElseGet(PayFatherTemplate::new);
double price = callMode == 0 ? payFatherTemplate.getDoubleCallFee() : payFatherTemplate.getRollCallFee();
@ -143,8 +143,8 @@ public class CallCostServiceImpl implements CallCostService {
estimateAmount = callSettlementSort.get(0).getEstimateAmount();
}
double deductAmount = NumberUtil.mul(durationToday.intValue(), price.doubleValue());
log.info("今日时长扣除费用 {},预扣费用 {}", deductAmount, estimateAmountToDay);
//余额足够
if (estimateAmount + userBalance > deductAmount + estimateAmountToDay) {
companyService.updateUserBalanceByCompanyId(userBalance + estimateAmount - (deductAmount + estimateAmountToDay), companyId);

@ -0,0 +1,29 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.TaskTag;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author jt
*/
@Repository
public interface TaskTagRepository extends JpaRepository<TaskTag, Long>, JpaSpecificationExecutor<TaskTag> {
/**
* tag
*
* @param userId id
* @return
*/
List<TaskTag> findTaskTagByUserId(Long userId);
/**
* idtag
* @param taskId
* @return
*/
TaskTag findTaskTagByTaskId(Long taskId);
}

@ -6,7 +6,6 @@ import com.baiye.http.CommonResponse;
import com.baiye.model.dto.DynamicTaskDistributionDTO;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.modules.system.domain.Task;
import com.baiye.modules.system.domain.TaskUserDistribution;
import com.baiye.modules.system.service.TaskService;
import com.baiye.modules.system.service.dto.TaskTagDto;
import com.baiye.socket.WebSocketServer;
@ -21,7 +20,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -113,23 +111,39 @@ public class TaskController {
return CommonResponse.createBySuccessMessage("操作成功");
}
@ApiOperation("新建dmp任务")
@PostMapping("/saveAdBackTask")
public ResponseEntity<Object> saveAdBackTask(@RequestBody @Validated TaskTagDto taskTagDto) {
taskService.saveAdBackTask(taskTagDto);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@ApiOperation("新增动态任务(自动)分配比率")
@PostMapping("/addTaskDistribution")
public CommonResponse<Object> addTaskDistribution(@RequestBody @Validated DynamicTaskDistributionDTO dynamicTaskDistributionDTO){
public CommonResponse<Object> addTaskDistribution(@RequestBody @Validated DynamicTaskDistributionDTO dynamicTaskDistributionDTO) {
taskService.addTaskDistribution(dynamicTaskDistributionDTO);
return CommonResponse.createBySuccessMessage("操作成功");
}
@ApiOperation("查询动态任务(自动)分配比率")
@GetMapping("/findTaskDistribution")
public CommonResponse<DynamicTaskDistributionDTO> findTaskDistribution(@RequestParam("taskId") Long taskId){
public CommonResponse<DynamicTaskDistributionDTO> findTaskDistribution(@RequestParam("taskId") Long taskId) {
return CommonResponse.createBySuccess(taskService.findTaskDistribution(taskId));
}
/**
* dmp
*/
@ApiOperation("新建dmp任务")
@PostMapping("/saveAdBackTask")
public CommonResponse<Object> saveAdBackTask(@RequestBody @Validated TaskTagDto taskTagDto) {
return taskService.saveAdBackTask(taskTagDto);
}
@ApiOperation("查询dmp任务信息")
@GetMapping("/queryDmpTask")
public CommonResponse<Object> queryDmpTask(Long taskId) {
return CommonResponse.createBySuccess(taskService.queryDmpTask(taskId));
}
@ApiOperation("修改dmp任务信息")
@PostMapping("/updateDmpTask")
public CommonResponse<Object> updateDmpTask(@RequestBody TaskTagDto taskTagDto) {
return taskService.updateDmpTask(taskTagDto);
}
}

@ -1,14 +1,12 @@
package com.baiye.modules.system.service;
import com.baiye.http.CommonResponse;
import com.baiye.model.dto.DynamicTaskDistributionDTO;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.modules.system.domain.Task;
import com.baiye.modules.system.domain.TaskUserDistribution;
import com.baiye.modules.system.service.dto.TaskDto;
import com.baiye.modules.system.service.dto.TaskTagDto;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import java.util.List;
/**
@ -88,21 +86,38 @@ public interface TaskService {
void updateTaskEncryption(Long taskId);
/**
* ad-back
* ()
*/
void addTaskDistribution(DynamicTaskDistributionDTO dynamicTaskDistributionDTO);
/**
* ()
*
* @return
*/
DynamicTaskDistributionDTO findTaskDistribution(Long taskId);
/**
* dmp
*
* @param taskTagDto
* @return
*/
void saveAdBackTask(TaskTagDto taskTagDto);
CommonResponse<Object> saveAdBackTask(TaskTagDto taskTagDto);
/**
* ()
* dmp
*
* @param taskId
* @return
*/
void addTaskDistribution(DynamicTaskDistributionDTO dynamicTaskDistributionDTO);
TaskTagDto queryDmpTask(Long taskId);
/**
* ()
* dmp
*
* @param taskTagDto
* @return
*/
DynamicTaskDistributionDTO findTaskDistribution(Long taskId);
CommonResponse<Object> updateDmpTask(TaskTagDto taskTagDto);
}

@ -14,6 +14,8 @@ import java.util.List;
@Setter
@NoArgsConstructor
public class TaskTagDto {
private Long taskId;
/**
*
*/

@ -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++) {

@ -671,7 +671,9 @@ 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);
if (StringUtils.isNotBlank(remark)) {
clueMiddle.setRemark(remark);
}
clueMiddleRepository.save(clueMiddle);
//动态任务
if (dynamicTaskDto.getType() == FileConstant.FIVE_NUMBER) {

Loading…
Cancel
Save