标签业务修改(合代码,未测试)

master
yqy 2 years ago
parent 35a82d11fc
commit d5ac175898

@ -6,7 +6,6 @@ import com.baiye.model.dto.DynamicTaskDistributionDTO;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.modules.platform.domain.Task;
import com.baiye.modules.platform.service.TaskService;
import com.baiye.modules.platform.service.dto.TaskDto;
import com.baiye.modules.platform.service.dto.TaskTagDto;
import com.baiye.valid.AddGroup;
import io.swagger.annotations.Api;
@ -18,7 +17,6 @@ import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -35,6 +33,7 @@ public class TaskController {
private final TaskService taskService;
@Inner(value = false)
@ApiOperation("新建任务")
@PostMapping("/saveTask")
public CommonResponse<Object> saveTask(@RequestBody @Validated({AddGroup.class}) Task task) {
@ -62,7 +61,7 @@ public class TaskController {
@ApiOperation("查询任务列表")
@GetMapping("/list")
@Inner
@Inner(value = false)
public ResponseEntity<Object> list(TaskQueryCriteria taskQueryCriteria) {
return new ResponseEntity<>(taskService.list(taskQueryCriteria), HttpStatus.OK);
}
@ -82,12 +81,11 @@ public class TaskController {
@ApiOperation("查询任务标签和小组任务标签")
@GetMapping("/findTaskLabel")
public ResponseEntity<Map<String, List<String>>> findTaskLabel(@RequestParam("taskId") Long taskId,
@RequestParam(value = "organizeId", required = false) Long organizeId,
@RequestParam(value = "userId", required = false) Long userId) {
return new ResponseEntity<>(taskService.findTaskLabel(taskId, organizeId, userId), HttpStatus.OK);
public ResponseEntity<Object> findTaskLabel(@RequestParam(value = "userId") Long userId) {
return new ResponseEntity<>(taskService.findTaskLabel(userId), HttpStatus.OK);
}
@Inner
@ApiOperation("修改任务信息")
@PostMapping("/update")
public CommonResponse<Object> updateTask(@RequestBody Task task) {
@ -109,6 +107,7 @@ public class TaskController {
return CommonResponse.createBySuccess();
}
@Inner
@ApiOperation("websocket发送错误信息")
@GetMapping("/sendErrMessage")
public void sendErrMessage(String errorMessage, Long userId) {
@ -129,6 +128,7 @@ public class TaskController {
return CommonResponse.createBySuccessMessage("操作成功");
}
@Inner
@ApiOperation("查询动态任务(自动)分配比率")
@GetMapping("/findTaskDistribution")
public CommonResponse<DynamicTaskDistributionDTO> findTaskDistribution(@RequestParam("taskId") Long taskId) {

@ -58,7 +58,7 @@ public interface TaskService {
/**
*
*/
Map<String, List<String>> findTaskLabel(Long taskId, Long organizeId, Long userId);
List<Object> findTaskLabel(Long userId);
/**
*

@ -59,6 +59,7 @@ public class LabelOrganizeServiceImpl implements LabelOrganizeService {
String name = labelOrganize.getName();
Long organizeId = labelOrganize.getId();
List<Label> labelList = labelOrganize.getLabelList();
Integer isEnable = labelOrganize.getIsEnable();
Long currentUserId = SecurityUtils.getCurrentUserId();
//1、删除标签信息
if (CollUtil.isNotEmpty(delLabelIds)) {
@ -69,6 +70,7 @@ public class LabelOrganizeServiceImpl implements LabelOrganizeService {
if (RequestUtils.isNotBlank(name)) {
updateLabelOrganize.setName(name);
}
if (isEnable != null) updateLabelOrganize.setIsEnable(isEnable);
labelOrganizeRepository.save(updateLabelOrganize);
//3、是否有新增标签
if (CollUtil.isNotEmpty(labelList)) {

@ -21,7 +21,6 @@ import com.baiye.modules.platform.service.LabelService;
import com.baiye.modules.platform.service.TaskService;
import com.baiye.modules.platform.service.dto.*;
import com.baiye.modules.platform.service.mapstruct.TaskMapper;
import com.baiye.modules.platform.service.mapstruct.TaskOrganizeMapper;
import com.baiye.modules.system.domain.User;
import com.baiye.modules.system.repository.UserRepository;
import com.baiye.socket.WebSocketServer;
@ -62,7 +61,6 @@ public class TaskServiceImpl implements TaskService {
private final TaskUserDistributionRepository taskUserDistributionRepository;
private final AdBackRequestApi adBackRequestApi;
private final TaskTagRepository taskTagRepository;
private final TaskOrganizeMapper taskOrganizeMapper;
private final WebSocketServer webSocketServer;
@Value("${snowflake.workerId}")
private int workerId;
@ -73,36 +71,15 @@ public class TaskServiceImpl implements TaskService {
@Override
@Transactional(rollbackOn = Exception.class)
public void saveTask(Task task) {
Long labelOrganizeId = task.getLabelOrganizeId();
if (task.getId() == null) {
task.setId(IdUtil.getSnowflake(workerId, datacenterId).nextId());
}
if (CollUtil.isNotEmpty(task.getOrganizeList())) {
task.setOrganizeList(task.getOrganizeList());
}
if (task.getCreateBy() == null) {
task.setCreateBy(SecurityUtils.getCurrentUserId());
}
if (task.getIsForm() == DefaultNumberConstants.FIVE_NUMBER) {
List<String> labelList = new ArrayList<>();
labelList.add("有意向");
labelList.add("无意向");
labelList.add("未接通");
task.setBaseLabel(labelList);
} else {
List<String> labelList = labelService.findLabelList(new HashSet<>(Collections.singleton(labelOrganizeId)));
if (CollUtil.isNotEmpty(labelList)) {
task.setBaseLabel(labelList);
}
}
if (task.getId() == null) task.setId(IdUtil.getSnowflake(workerId, datacenterId).nextId());
if (CollUtil.isNotEmpty(task.getOrganizeList())) task.setOrganizeList(task.getOrganizeList());
task.setCreateBy(SecurityUtils.getCurrentUserId());
task.setIsDistribution(DefaultNumberConstants.ZERO_NUMBER);
taskRepository.save(task);
}
/**
* ad-back
*
* @param taskTagDto
*/
@Override
public CommonResponse<Object> saveAdBackTask(TaskTagDto taskTagDto) {
@ -113,7 +90,7 @@ public class TaskServiceImpl implements TaskService {
}
createTask(taskId, taskTagDto.getUserId(), taskTagDto.getTaskName(), DefaultNumberConstants.FOUR_NUMBER, taskTagDto.getLabelOrganizeId(), taskTagDto
.getRemark());
// 推送到adbask
// 推送到adbask
adBackRequestApi.sendTag(taskId, taskTagDto.getUserId(), taskTagDto.getTagStr());
return CommonResponse.createBySuccess();
}
@ -179,7 +156,6 @@ public class TaskServiceImpl implements TaskService {
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.ZERO_NUMBER);
//设置默认值
task.setIsDistribution(DefaultNumberConstants.ZERO_NUMBER);
@ -187,6 +163,7 @@ public class TaskServiceImpl implements TaskService {
task.setIsForm(isForm);
task.setCreateBy(id);
task.setRemark(remark);
task.setTaskName(taskName);
taskRepository.save(task);
}
@ -363,28 +340,32 @@ public class TaskServiceImpl implements TaskService {
}
@Override
public Map<String, List<String>> findTaskLabel(Long taskId, Long organizeId, Long userId) {
Map<String, List<String>> returnMap = new HashMap<>();
TaskOrganizeQueryCriteria taskOrganizeQueryCriteria = new TaskOrganizeQueryCriteria();
taskOrganizeQueryCriteria.setTaskId(taskId);
if (organizeId != null) {
taskOrganizeQueryCriteria.setOrganizeId(organizeId);
}
List<TaskOrganizeDto> taskOrganizeList = taskOrganizeMapper.toDto(taskOrganizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskOrganizeQueryCriteria, criteriaBuilder)));
if (CollUtil.isNotEmpty(taskOrganizeList)) {
TaskOrganizeDto taskOrganizeDto = taskOrganizeList.get(0);
returnMap.put(KeyFieldConstants.TASK_ORGANIZE_LABEL, taskOrganizeDto.getOrganizeLabel());
}
if (userId != null) {
User user = userRepository.findById(userId).orElseGet(User::new);
LabelOrganizeQueryCriteria criteria = new LabelOrganizeQueryCriteria();
criteria.setCreateBy(user.getWhichUserId());
criteria.setIsEnable(DefaultNumberConstants.ONE_NUMBER);
Set<Long> ids = labelOrganizeService.query(criteria).stream().map(LabelOrganizeDto::getId).collect(Collectors.toSet());
List<String> labelList = labelService.findLabelList(ids);
returnMap.put(KeyFieldConstants.TASK_BASE_LABEL, labelList);
public List<Object> findTaskLabel(Long userId) {
User user = userRepository.findById(userId).orElseGet(User::new);
// 查询公司下的标签组
LabelOrganizeQueryCriteria criteria = new LabelOrganizeQueryCriteria();
criteria.setCreateBy(user.getWhichUserId());
criteria.setIsEnable(DefaultNumberConstants.ONE_NUMBER);
List<LabelOrganizeDto> labelOrganizeDtoList = labelOrganizeService.query(criteria);
// 查询公司下的标签信息
LabelQueryCriteria labelQueryCriteria = new LabelQueryCriteria();
labelQueryCriteria.setUserId(user.getWhichUserId());
List<LabelDto> labelDtoList = labelService.queryAll(labelQueryCriteria);
Map<Long, List<LabelDto>> collect = labelDtoList.stream().collect(Collectors.groupingBy(LabelDto::getLabelOrganizeId));
// 数据处理
List<Object> list = new ArrayList<>();
if (CollUtil.isNotEmpty(labelOrganizeDtoList)) {
for (LabelOrganizeDto labelOrganizeDto : labelOrganizeDtoList) {
if (collect.containsKey(labelOrganizeDto.getId())) {
Map<String, Object> map = new HashMap<>();
map.put("organizeName", labelOrganizeDto.getName());
List<String> labelList = collect.get(labelOrganizeDto.getId()).stream().map(LabelDto::getLabelName).collect(Collectors.toList());
map.put("labelList", labelList);
list.add(map);
}
}
}
return returnMap;
return list;
}
@Override
@ -518,5 +499,4 @@ public class TaskServiceImpl implements TaskService {
dynamicTaskDistributionUserDTO.setRatio(countMap.get(key));
}
}
}

@ -103,6 +103,7 @@ public class UserServiceImpl implements UserService {
private final PayTemplateUserService payTemplateUserService;
private final OrganizeUserRepository organizeUserRepository;
private final TaskRepository taskRepository;
private final TaskService taskService;
private final TaskOrganizeRepository taskOrganizeRepository;
private final TaskUserDistributionRepository taskUserDistributionRepository;
private final SourceClueClient sourceClueClient;
@ -239,13 +240,13 @@ public class UserServiceImpl implements UserService {
Long labelOrganizeId = labelOrganizeService.saveDefault(userCreateResult.getId());
if (userDTO.getCompanyType() != null && userDTO.getCompanyType() == 1) {
//抖音(飞鱼)
createTask(userCreateResult.getId(), "抖音任务", DefaultNumberConstants.THREE_NUMBER, labelOrganizeId);
createTask(userCreateResult.getId(), "抖音任务", DefaultNumberConstants.THREE_NUMBER);
}
//公司名称做的对应,所以将公司名设为表单任务名
createTask(userCreateResult.getId(), userCreateResult.getUsername(), DefaultNumberConstants.ONE_NUMBER, labelOrganizeId);
createTask(userCreateResult.getId(), "员工上传任务", DefaultNumberConstants.TWO_NUMBER, labelOrganizeId);
createTask(userCreateResult.getId(), "拓客模块-投流回流池", DefaultNumberConstants.SEVEN_NUMBER, labelOrganizeId);
createTask(userCreateResult.getId(), "拓客模块-拓客回流池", DefaultNumberConstants.SIX_NUMBER, labelOrganizeId);
createTask(userCreateResult.getId(), userCreateResult.getUsername(), DefaultNumberConstants.ONE_NUMBER);
createTask(userCreateResult.getId(), "员工上传任务", DefaultNumberConstants.TWO_NUMBER);
createTask(userCreateResult.getId(), "拓客模块-投流回流池", DefaultNumberConstants.SEVEN_NUMBER);
createTask(userCreateResult.getId(), "拓客模块-拓客回流池", DefaultNumberConstants.SIX_NUMBER);
}
MultipartFile file = userDTO.getFile();
@ -266,7 +267,7 @@ public class UserServiceImpl implements UserService {
*
* @param username
*/
private void createTask(Long id, String username, Integer isForm, Long labelOrganizeId) {
private void createTask(Long id, String username, Integer isForm) {
Long taskId = IdUtil.getSnowflake(9, 9).nextId();
Task task = new Task();
task.setId(taskId);
@ -490,7 +491,7 @@ public class UserServiceImpl implements UserService {
//抖音授权
List<Task> tasks = taskRepository.findByCreateByAndIsForm(user.getId(), DefaultNumberConstants.THREE_NUMBER);
if (CollUtil.isEmpty(tasks)) {
createTask(user.getId(), "抖音任务", DefaultNumberConstants.THREE_NUMBER, null);
createTask(user.getId(), "抖音任务", DefaultNumberConstants.THREE_NUMBER);
}
}
}
@ -752,8 +753,6 @@ public class UserServiceImpl implements UserService {
/**
*
*
* @param username /
*/
/* private void flushCache(String username) {
userCacheClean.cleanUserCache(username);

@ -76,11 +76,8 @@ public class ClueDto implements Serializable {
@ApiModelProperty(value = "标签")
private Object sourceLabel;
@ApiModelProperty(value = "组长标签")
private List<String> organizeLabel = new ArrayList<>();
@ApiModelProperty(value = "任务(管理员)标签")
private List<String> baseLabel = new ArrayList<>();
@ApiModelProperty(value = "全部标签返回")
private List<Object> label = new ArrayList<>();
@ApiModelProperty(value = "任务名")
private String taskName;

@ -22,7 +22,7 @@ public interface TaskClient {
@ApiOperation("添加任务")
@PostMapping(value = PAY_PREFIX + "/saveTask")
ResponseEntity<Object> saveTask(@RequestBody Task task);
ResponseEntity<Object> saveTask(@RequestBody Task task, @RequestHeader(SecurityConstants.FROM) String from);
@ApiOperation("查询任务列表")
@PostMapping(PAY_PREFIX + "/query")
@ -34,7 +34,7 @@ public interface TaskClient {
@ApiOperation("websocket发送错误信息")
@GetMapping(PAY_PREFIX + "/sendErrMessage")
void sendErrMessage(@RequestParam("errorMessage") String errorMessage, @RequestParam("userId") Long userId);
void sendErrMessage(@RequestParam("errorMessage") String errorMessage, @RequestParam("userId") Long userId, @RequestHeader(SecurityConstants.FROM) String from);
@ApiOperation("查询任务详情")
@GetMapping(PAY_PREFIX + "/queryDetails")
@ -42,11 +42,11 @@ public interface TaskClient {
@ApiOperation("修改任务信息")
@PostMapping(PAY_PREFIX + "/update")
CommonResponse<Object> updateTask(@RequestBody Task task);
CommonResponse<Object> updateTask(@RequestBody Task task, @RequestHeader(SecurityConstants.FROM) String from);
@ApiOperation("查询动态任务(自动)分配比率")
@GetMapping(PAY_PREFIX + "/findTaskDistribution")
CommonResponse<DynamicTaskDistributionDTO> findTaskDistribution(@RequestParam("taskId") Long taskId);
CommonResponse<DynamicTaskDistributionDTO> findTaskDistribution(@RequestParam("taskId") Long taskId, @RequestHeader(SecurityConstants.FROM) String from);
@ApiOperation("查询任务列表")
@GetMapping(PAY_PREFIX + "/list")
@ -65,7 +65,5 @@ public interface TaskClient {
@ApiOperation("查询任务标签和小组任务标签")
@GetMapping(PAY_PREFIX + "/findTaskLabel")
ResponseEntity<Map<String, List<String>>> findTaskLabel(@RequestParam("taskId") Long taskId,
@RequestParam(value = "organizeId", required = false) Long organizeId,
@RequestParam(value = "userId", required = false) Long userId);
ResponseEntity<List<Object>> findTaskLabel(@RequestParam(value = "userId") Long userId);
}

@ -17,7 +17,7 @@ import java.util.Set;
@Component
public class TaskClientFallback implements TaskClient {
@Override
public ResponseEntity<Object> saveTask(Task task) {
public ResponseEntity<Object> saveTask(Task task, String from) {
return null;
}
@ -32,7 +32,7 @@ public class TaskClientFallback implements TaskClient {
}
@Override
public void sendErrMessage(String errorMessage, Long userId) {
public void sendErrMessage(String errorMessage, Long userId, String from) {
}
@ -42,12 +42,12 @@ public class TaskClientFallback implements TaskClient {
}
@Override
public CommonResponse<Object> updateTask(Task task) {
public CommonResponse<Object> updateTask(Task task, String from) {
return null;
}
@Override
public CommonResponse<DynamicTaskDistributionDTO> findTaskDistribution(Long taskId) {
public CommonResponse<DynamicTaskDistributionDTO> findTaskDistribution(Long taskId, String from) {
return null;
}
@ -61,7 +61,7 @@ public class TaskClientFallback implements TaskClient {
}
@Override
public ResponseEntity<Map<String, List<String>>> findTaskLabel(Long taskId, Long organizeId, Long userId) {
public ResponseEntity<List<Object>> findTaskLabel(Long userId) {
return null;
}
}

@ -105,18 +105,6 @@ public class ClueController {
return new ResponseEntity<>(clueService.findMemberIdList(clueMiddle), HttpStatus.OK);
}
@ApiOperation("导出资源记录")
@GetMapping("/queryRecordList/download")
public void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria) {
clueService.exportRecordList(response, clueRecordCriteria);
}
@ApiOperation("导出资源(客户列表)")
@GetMapping("/queryAll/download")
public void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria) {
clueService.exportClueList(response, clueQueryCriteria);
}
@ApiOperation("查询资源标签(统计)")
@PostMapping("/findSourceLabel")
public ResponseEntity<List<ResSourceLabel>> findSourceLabel(@RequestBody List<Long> clueIds) {

@ -2,6 +2,7 @@ package com.baiye.module.controller;
import com.baiye.http.CommonResponse;
import com.baiye.module.service.ClueRecordService;
import com.baiye.module.service.dto.ClueRecordCriteria;
import com.baiye.module.service.dto.ClueRecordQueryCriteria;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -9,6 +10,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@RequiredArgsConstructor
@RestController
@Api(tags = "文件上传记录表")
@ -37,4 +40,10 @@ public class ClueRecordController {
public CommonResponse<Object> findClueFailRecord(@RequestParam("recordId") Long recordId){
return CommonResponse.createBySuccess(clueRecordService.findClueFailRecord(recordId));
}
@ApiOperation("导出资源记录")
@GetMapping("/queryRecordList/download")
public void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria) {
clueRecordService.exportRecordList(response, clueRecordCriteria);
}
}

@ -123,6 +123,7 @@ public class ClueJpa {
Integer memberStatus = clueQueryCriteria.getMemberStatus();
Boolean isAdmin = clueQueryCriteria.getIsAdmin();
Integer publicPoolStatus = clueQueryCriteria.getPublicPoolStatus();
Long userId = clueQueryCriteria.getUserId();
List<Timestamp> newestCallTimeList = clueQueryCriteria.getNewestCallTime();
List<Timestamp> createTime = clueQueryCriteria.getCreateTime();
@ -186,6 +187,9 @@ public class ClueJpa {
if (publicPoolStatus != null) {
sql.append("and cm.public_pool_status = :publicPoolStatus ");
}
if (userId != null) {
sql.append("and c.create_by = :userId ");
}
//拼接最后加入时间排序,没加id排序出现数据重复问题(注意空格)
sql.append("ORDER BY c.create_time desc ,c.id ");
@ -252,6 +256,9 @@ public class ClueJpa {
if (publicPoolStatus != null) {
query.setParameter("publicPoolStatus", publicPoolStatus);
}
if (userId != null) {
query.setParameter("userId", userId);
}
query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
return query.getResultList();
}

@ -1,9 +1,10 @@
package com.baiye.module.service;
import com.baiye.module.entity.ClueFailRecord;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.service.dto.ClueRecordCriteria;
import com.baiye.module.service.dto.ClueRecordQueryCriteria;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
public interface ClueRecordService {
@ -22,4 +23,9 @@ public interface ClueRecordService {
*
*/
List<ClueFailRecord> findClueFailRecord(Long recordId);
/**
*
*/
void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria);
}

@ -61,15 +61,10 @@ public interface ClueService {
*/
List<ClueDto> query(ClueQueryCriteria clueQueryCriteria);
/**
*
*/
void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria);
/**
* ()
*/
void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria);
// /**
// * 导出资源(客户列表)
// */
// void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria);
/**
*

@ -1,97 +1,97 @@
package com.baiye.module.service.dto;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baiye.util.ExportOriginConverter;
import com.baiye.util.ExportStatusConverter;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class ExcelClueDto implements Serializable {
@ExcelIgnore
private Long id;
@ExcelProperty(value = "姓名", index = 0)
@ApiModelProperty(value = "姓名")
private String name;
@ExcelProperty(value = "手机号", index = 1)
@ApiModelProperty(value = "nid")
private String nid;
@ExcelProperty(value = "微信", index = 2)
@ApiModelProperty(value = "微信")
private String wx;
@ExcelProperty(value = "渠道", index = 4 ,converter = ExportOriginConverter.class)
@ApiModelProperty(value = "数据来源 0:自定义模板 1:UC 2:快手 3:抖音 4:百度")
private Integer origin;
@ExcelProperty(value = "金额", index = 3)
@ApiModelProperty(value = "金额")
private String amount;
@ApiModelProperty(value = "数据收集日期")
@ExcelIgnore
private Date collectTime;
@ExcelProperty(value = "线索归属地", index = 5)
@ApiModelProperty(value = "线索归属地")
private String address;
@ExcelIgnore
@ApiModelProperty(value = "导入记录id")
private Long recordId;
@ExcelIgnore
@ApiModelProperty(value = "小组id")
private Long organizeId;
@ExcelIgnore
@ApiModelProperty(value = "所属组员id")
private Long memberId;
@ExcelProperty(value = "跟进状态", index = 6, converter = ExportStatusConverter.class)
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
private Integer memberStatus;
@ApiModelProperty(value = "创建人")
@ExcelIgnore
private Long createBy;
@ExcelProperty(value = "创建时间", index = 8)
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ExcelIgnore
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ExcelProperty(value = "备注", index = 7)
@ApiModelProperty(value = "备注")
private String remark;
@ExcelIgnore
private Long taskId;
@ExcelIgnore
private Object sourceLabel;
@ExcelIgnore
private List<String> organizeLabel;
@ExcelIgnore
private List<String> baseLabel;
}
//package com.baiye.module.service.dto;
//
//import com.alibaba.excel.annotation.ExcelIgnore;
//import com.alibaba.excel.annotation.ExcelProperty;
//import com.baiye.util.ExportOriginConverter;
//import com.baiye.util.ExportStatusConverter;
//import io.swagger.annotations.ApiModelProperty;
//import lombok.AllArgsConstructor;
//import lombok.Getter;
//import lombok.NoArgsConstructor;
//import lombok.Setter;
//
//import java.io.Serializable;
//import java.util.Date;
//import java.util.List;
//
//@Getter
//@Setter
//@AllArgsConstructor
//@NoArgsConstructor
//public class ExcelClueDto implements Serializable {
//
// @ExcelIgnore
// private Long id;
//
// @ExcelProperty(value = "姓名", index = 0)
// @ApiModelProperty(value = "姓名")
// private String name;
//
// @ExcelProperty(value = "手机号", index = 1)
// @ApiModelProperty(value = "nid")
// private String nid;
//
// @ExcelProperty(value = "微信", index = 2)
// @ApiModelProperty(value = "微信")
// private String wx;
//
// @ExcelProperty(value = "渠道", index = 4 ,converter = ExportOriginConverter.class)
// @ApiModelProperty(value = "数据来源 0:自定义模板 1:UC 2:快手 3:抖音 4:百度")
// private Integer origin;
//
// @ExcelProperty(value = "金额", index = 3)
// @ApiModelProperty(value = "金额")
// private String amount;
//
// @ApiModelProperty(value = "数据收集日期")
// @ExcelIgnore
// private Date collectTime;
//
// @ExcelProperty(value = "线索归属地", index = 5)
// @ApiModelProperty(value = "线索归属地")
// private String address;
//
// @ExcelIgnore
// @ApiModelProperty(value = "导入记录id")
// private Long recordId;
//
// @ExcelIgnore
// @ApiModelProperty(value = "小组id")
// private Long organizeId;
//
// @ExcelIgnore
// @ApiModelProperty(value = "所属组员id")
// private Long memberId;
//
// @ExcelProperty(value = "跟进状态", index = 6, converter = ExportStatusConverter.class)
// @ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
// private Integer memberStatus;
//
// @ApiModelProperty(value = "创建人")
// @ExcelIgnore
// private Long createBy;
//
// @ExcelProperty(value = "创建时间", index = 8)
// @ApiModelProperty(value = "创建时间")
// private Date createTime;
//
// @ExcelIgnore
// @ApiModelProperty(value = "更新时间")
// private Date updateTime;
//
// @ExcelProperty(value = "备注", index = 7)
// @ApiModelProperty(value = "备注")
// private String remark;
//
// @ExcelIgnore
// private Long taskId;
//
// @ExcelIgnore
// private Object sourceLabel;
//
// @ExcelIgnore
// private List<String> organizeLabel;
//
// @ExcelIgnore
// private List<String> baseLabel;
//}

@ -9,16 +9,23 @@ import com.baiye.module.dao.ClueRecordRepository;
import com.baiye.module.entity.ClueFailRecord;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.service.ClueRecordService;
import com.baiye.module.service.dto.ClueRecordCriteria;
import com.baiye.module.service.dto.ClueRecordDto;
import com.baiye.module.service.dto.ClueRecordQueryCriteria;
import com.baiye.module.service.mapstruct.ClueRecordMapper;
import com.baiye.task.FileAnalysisTask;
import com.baiye.util.ExportExcelUtil;
import com.baiye.util.QueryHelp;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.stream.Collectors;
@ -32,6 +39,7 @@ public class ClueRecordServiceImpl implements ClueRecordService {
private final UserClient userClient;
private final ClueRecordRepository clueRecordRepository;
private final ClueFailRecordRepository clueFailRecordRepository;
private final ClueRecordMapper clueRecordMapper;
@Value("${storage.download-auditing-file}")
private String auditingFileUrl;
@ -104,4 +112,12 @@ public class ClueRecordServiceImpl implements ClueRecordService {
public List<ClueFailRecord> findClueFailRecord(Long recordId) {
return clueFailRecordRepository.findByRecordId(recordId);
}
@Override
public void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria) {
clueRecordCriteria.setCreateBy(SecurityUtils.getCurrentUserId());
Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
List<ClueRecordDto> clueRecordDtoList = clueRecordMapper.toDto(clueRecordRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, clueRecordCriteria, criteriaBuilder), sort));
ExportExcelUtil.downloadEasyExcel(response, ClueRecordDto.class, clueRecordDtoList, "record");
}
}

@ -4,6 +4,7 @@ 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;
@ -18,9 +19,6 @@ import com.baiye.module.request.ReqOceanEngineApi;
import com.baiye.module.service.ClueService;
import com.baiye.module.service.CompanyService;
import com.baiye.module.service.dto.ClueRecordCriteria;
import com.baiye.module.service.dto.ClueRecordDto;
import com.baiye.module.service.dto.ExcelClueDto;
import com.baiye.module.service.mapstruct.ClueRecordMapper;
import com.baiye.task.ClueBackupsTask;
import com.baiye.util.*;
import lombok.RequiredArgsConstructor;
@ -29,14 +27,12 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
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 javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -49,7 +45,6 @@ public class ClueServiceImpl implements ClueService {
private final ClueRepository clueRepository;
private final ClueRecordRepository clueRecordRepository;
private final ClueRecordMapper clueRecordMapper;
private final ClueMiddleRepository clueMiddleRepository;
private final ClueTalkRepository clueTalkRepository;
private final ClueJpa clueJpa;
@ -268,7 +263,7 @@ public class ClueServiceImpl implements ClueService {
}
Set<Long> memberIds = clueDtoList.stream().map(ClueDto::getMemberId).collect(Collectors.toSet());
Map<Long, String> userNickNameMap = userClient.findById(memberIds);
// id查询(详情查询)时返回标签信息
// 资源ID查询(详情查询)时返回标签信息
if (clueQueryCriteria.getId() != null) {
for (ClueDto clueDto : clueDtoList) {
//查询分配人的用户名称
@ -276,18 +271,9 @@ public class ClueServiceImpl implements ClueService {
if (memberId != null && userNickNameMap.containsKey(memberId)) {
clueDto.setDistributeUserName(userNickNameMap.get(memberId));
}
ResponseEntity<Map<String, List<String>>> response = taskClient.findTaskLabel(clueDto.getTaskId(), clueDto.getOrganizeId(), clueQueryCriteria.getMemberId());
if (response.getStatusCode().value() != 200) {
throw new BadRequestException("查询出错");
}
List<String> organizeLabel = Objects.requireNonNull(response.getBody()).get(KeyFieldConstants.TASK_ORGANIZE_LABEL);
List<String> baseLabel = Objects.requireNonNull(response.getBody()).get(KeyFieldConstants.TASK_BASE_LABEL);
if (CollUtil.isNotEmpty(organizeLabel)) {
clueDto.setOrganizeLabel(organizeLabel);
}
if (CollUtil.isNotEmpty(baseLabel)) {
clueDto.setBaseLabel(baseLabel);
}
ResponseEntity<List<Object>> response = taskClient.findTaskLabel(clueQueryCriteria.getMemberId());
if (response.getStatusCode().value() != 200) throw new BadRequestException("查询出错");
if (CollUtil.isNotEmpty(response.getBody())) clueDto.setLabel(response.getBody());
AddWeChatFriendRecordDTO recordDTO = weChatAddFriendClient.findByClueId(clueDto.getId()).getBody();
clueDto.setAddWeChatStatus(DefaultNumberConstants.MINUS_ONE_NUMBER);
if (recordDTO != null) {
@ -302,22 +288,13 @@ public class ClueServiceImpl implements ClueService {
throw new BadRequestException("查询业务员不能为空");
}
@Override
public void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria) {
if (clueRecordCriteria.getCreateBy() != null) {
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
List<ClueRecordDto> clueRecordDtos = clueRecordMapper.toDto(clueRecordRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, clueRecordCriteria, criteriaBuilder), sort));
ExportExcelUtil.downloadEasyExcel(response, ClueRecordDto.class, clueRecordDtos, "export-Record");
}
}
@Override
public void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria) {
if (clueQueryCriteria.getMemberId() != null) {
List<ClueDto> clueDtoList = clueJpa.getClueList(clueQueryCriteria, null);
ExportExcelUtil.downloadEasyExcel(response, ExcelClueDto.class, clueDtoList, "export-clue");
}
}
// @Override
// public void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria) {
// if (clueQueryCriteria.getMemberId() != null) {
// List<ClueDto> clueDtoList = clueJpa.getClueList(clueQueryCriteria, null);
// ExportExcelUtil.downloadEasyExcel(response, ExcelClueDto.class, clueDtoList);
// }
// }
@Override
@Transactional(rollbackFor = Exception.class)
@ -327,16 +304,6 @@ public class ClueServiceImpl implements ClueService {
executeTalkClue(clueMiddle);
return;
}
//更新通话状态时不加锁
if (clueMiddle.getClueCallStatus() == null) {
//乐观锁,不用jpa查询(jpa有缓存这个坑)
if (clueMiddle.getOptimisticVersion() != null) {
Integer version = clueMiddleRepository.lookUpOptimisticVersion(clueMiddle.getClueId());
if (!version.equals(clueMiddle.getOptimisticVersion())) {
throw new BadRequestException("刷新后重试");
}
}
}
Clue clue = clueRepository.findById(clueMiddle.getClueId()).orElseGet(Clue::new);
ClueMiddle clueMiddleOne = clueMiddleRepository.findById(clueMiddle.getClueId()).orElseGet(ClueMiddle::new);
if (clueMiddle.getSourceLabel() != null) {
@ -494,7 +461,7 @@ public class ClueServiceImpl implements ClueService {
}
if (taskNum == null || taskNum == 0) {
try {
taskClient.sendErrMessage("导入资源合规条数0条,请检查文件重新导入", userId);
taskClient.sendErrMessage("导入资源合规条数0条,请检查文件重新导入", userId, SecurityConstants.FROM_IN);
} catch (Exception e) {
throw new BadRequestException("发送websocket失败");
}
@ -508,16 +475,13 @@ 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);
}
ResponseEntity<Object> response = taskClient.saveTask(task);
if (response.getStatusCode().value() != 200) {
throw new BadRequestException("创建任务失败");
}
ResponseEntity<Object> response = taskClient.saveTask(task, SecurityConstants.FROM_IN);
if (response.getStatusCode().value() != 200) throw new BadRequestException("创建任务失败");
}
@Override
@ -682,7 +646,6 @@ public class ClueServiceImpl implements ClueService {
@Override
@Transactional(rollbackFor = Exception.class)
public void insertDynamicTask(DynamicTaskDto dynamicTaskDto) {
Long taskId = dynamicTaskDto.getTaskId();
String remark = dynamicTaskDto.getRemark();
boolean flag = false;
@ -743,7 +706,7 @@ public class ClueServiceImpl implements ClueService {
task.setId(taskId);
task.setTotalNumber(taskNum);
task.setIsDistribution(1);
taskClient.updateTask(task);
taskClient.updateTask(task, SecurityConstants.FROM_IN);
}
}
@ -835,7 +798,7 @@ public class ClueServiceImpl implements ClueService {
Task crmTask = new Task();
crmTask.setId(crmTaskId);
crmTask.setTotalNumber(crmTotalNumber + 1);
taskClient.updateTask(crmTask);
taskClient.updateTask(crmTask, SecurityConstants.FROM_IN);
//初始化线索
ClueMiddle clueMiddle = new ClueMiddle();
@ -862,7 +825,7 @@ public class ClueServiceImpl implements ClueService {
} else {
clueIds = clueMiddleRepository.findByTaskIdAndMemberStatus(taskId, DefaultNumberConstants.ZERO_NUMBER);
}
CommonResponse<DynamicTaskDistributionDTO> response = taskClient.findTaskDistribution(taskId);
CommonResponse<DynamicTaskDistributionDTO> response = taskClient.findTaskDistribution(taskId, SecurityConstants.FROM_IN);
if (response.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
DynamicTaskDistributionDTO dynamicTaskDistributionDTO = response.getData();

@ -10,6 +10,7 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.SecurityConstants;
import com.baiye.feign.TaskClient;
import com.baiye.feign.TaskImeiClient;
import com.baiye.model.dto.TaskQueryCriteria;
@ -117,7 +118,7 @@ public class FormSourceServiceImpl implements FormSourceService {
task.setId(taskId);
task.setTotalNumber(taskNum);
task.setIsDistribution(1);
taskClient.updateTask(task);
taskClient.updateTask(task, SecurityConstants.FROM_IN);
map.put("status", 0);
map.put("msg", "推送成功");

@ -1,6 +1,7 @@
package com.baiye.module.service.impl;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.model.dto.UserDto;
@ -28,6 +29,7 @@ public class TurnoverRecordServiceImpl implements TurnoverRecordService {
private final ClueMiddleRepository clueMiddleRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public void save(TurnoverRecord turnoverRecord) {
UserDto userDto = JSONUtil.toBean(SecurityUtils.getUser(), UserDto.class);
turnoverRecord.setMemberId(userDto.getId());

@ -2,9 +2,11 @@ package com.baiye.task;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.baiye.constant.SecurityConstants;
import com.baiye.constant.FileConstant;
import com.baiye.exception.BadRequestException;
import com.baiye.feign.TaskClient;
import com.baiye.constant.FileConstant;
import com.baiye.module.dao.*;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.entity.Task;
@ -25,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.FileInputStream;
import java.util.*;
import java.util.List;
@ -82,7 +85,7 @@ public class FileAnalysisTask {
}
}
} catch (Exception e) {
taskClient.sendErrMessage("导入资源错误,请检查数据格式后重新导入", clueRecords.get(0).getCreateBy());
taskClient.sendErrMessage("导入资源错误,请检查数据格式后重新导入", clueRecords.get(0).getCreateBy(), SecurityConstants.FROM_IN);
//导入文件记录失败修改状态
updateList(clueRecords);
e.printStackTrace();
@ -103,7 +106,7 @@ public class FileAnalysisTask {
task.setId(taskId);
task.setTotalNumber(taskNum);
task.setIsDistribution(1);
taskClient.updateTask(task);
taskClient.updateTask(task, SecurityConstants.FROM_IN);
// 查看此任务是否开启自动分配,开启了就分配掉
clueService.dynamicTaskDistribution(taskId, uploadType);
return;

@ -13,6 +13,7 @@ import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baiye.config.properties.DeliveryProperties;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.SecurityConstants;
import com.baiye.exception.BadRequestException;
import com.baiye.feign.DownRecordClient;
import com.baiye.feign.TaskClient;
@ -152,7 +153,7 @@ public class MailSourceTask {
// 删除邮件 删除文件
FileUtil.del(path);
FileUtil.del(unzipPath);
taskClient.updateTask(task);
taskClient.updateTask(task, SecurityConstants.FROM_IN);
deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, taskName);
log.info("============== message parsing succeeded file path as {} unzip path as {} ===============", path, unzipPath);
}

@ -167,7 +167,7 @@ public class OceanEngineSync {
task.setId(taskId);
task.setTotalNumber(taskNum);
task.setIsDistribution(1);
taskClient.updateTask(task);
taskClient.updateTask(task, SecurityConstants.FROM_IN);
OceanEngineClueId oceanEngineClueId = new OceanEngineClueId();
oceanEngineClueId.setLocalClueId(save.getId());

Loading…
Cancel
Save