代码提交

master
yqy 3 years ago
parent 6b68ce0df0
commit a14de5df7a

@ -0,0 +1,49 @@
package com.baiye.constant;
/**
* ID
*
* @author YQY
* @date : 2021/12/30
*/
public class RoleNumberConstants {
private RoleNumberConstants() {
}
/**
*
*/
public static final Long MINUS_ONE_NUMBER = 1L;
/**
*
*/
public static final Long MINUS_TWO_NUMBER = 2L;
/**
*
*/
public static final Long MINUS_THREE_NUMBER = 3L;
/**
*
*/
public static final Long MINUS_FIVE_NUMBER = 5L;
/**
*
*/
public static final Long MINUS_SEVEN_NUMBER = 7L;
/**
*
*/
public static final Long MINUS_EIGHT_NUMBER = 8L;
/**
*
*/
public static final Long MINUS_NINE_NUMBER = 9L;
}

@ -8,6 +8,7 @@ import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Getter
@Setter
@ -47,9 +48,6 @@ public class ClueDto implements Serializable {
@ApiModelProperty(value = "所属组员id")
private Long memberId;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
private Integer memberStatus;
@ApiModelProperty(value = "创建人")
private Long createBy;
@ -63,4 +61,16 @@ public class ClueDto implements Serializable {
private String remark;
private Long taskId;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
private Integer memberStatus;
@ApiModelProperty(value = "标签")
private Object sourceLabel;
@ApiModelProperty(value = "组长标签")
private List<String> organizeLabel;
@ApiModelProperty(value = "任务(管理员)标签")
private List<String> baseLabel;
}

@ -18,11 +18,9 @@ public class ClueQueryCriteria {
private Long id;
@ApiModelProperty(value = "小组id")
@Query
private Long organizeId;
@ApiModelProperty(value = "所属组员id")
@Query
private Long memberId;
@ApiModelProperty(value = "数据来源 0:自定义模板 1:UC 2:快手 3:抖音 4:百度")
@ -34,7 +32,6 @@ public class ClueQueryCriteria {
private String name;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
@Query
private Integer memberStatus;
@ApiModelProperty(value = "选取的组员ID")

@ -1,11 +1,9 @@
package com.baiye.modules.system.service.dto;
package com.baiye.model.dto;
import com.baiye.annotation.Query;
import com.baiye.modules.system.domain.Organize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.sql.Timestamp;
import java.util.List;
@ -36,6 +34,4 @@ public class OrganizeQueryCriteria {
@ApiModelProperty(value = "标签名称")
private List<String> labelNameList;
private List<Organize> organizeList;
}

@ -57,17 +57,17 @@ public class BaseClue implements Serializable {
@Column(name = "record_id")
private Long recordId;
@ApiModelProperty(value = "小组id")
@Column(name = "organize_id")
private Long organizeId;
@ApiModelProperty(value = "所属组员id")
@Column(name = "member_id")
private Long memberId;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
@Column(name = "member_status")
private Integer memberStatus;
// @ApiModelProperty(value = "小组id")
// @Column(name = "organize_id")
// private Long organizeId;
//
// @ApiModelProperty(value = "所属组员id")
// @Column(name = "member_id")
// private Long memberId;
// @ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
// @Column(name = "member_status")
// private Integer memberStatus;
@ApiModelProperty(value = "创建人")
@Column(name = "create_by")
@ -87,7 +87,7 @@ public class BaseClue implements Serializable {
@Column(name = "remark")
private String remark;
@Convert(converter = JpaConverterListJson.class)
private List<String> sourceLabel;
// @Convert(converter = JpaConverterListJson.class)
// private List<String> sourceLabel;
}

@ -127,6 +127,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers( "/api/users/admin").permitAll()
.antMatchers( "/api/task/query").permitAll()
.antMatchers( "/api/organize/queryAll").permitAll()
// 自定义匿名访问所有url放行允许匿名和带Token访问细腻化到每个 Request 类型
// GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()

@ -1,6 +1,7 @@
package com.baiye.modules.system.domain;
import com.baiye.modules.system.service.dto.UserDto;
import com.baiye.util.JpaConverterListJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.*;
@ -89,6 +90,10 @@ public class Organize implements Serializable {
@Column(name = "remark")
private String remark;
@ApiModelProperty(value = "组长标签")
@Convert(converter = JpaConverterListJson.class)
private List<String> organizeLabel;
@Transient

@ -3,15 +3,12 @@ package com.baiye.modules.system.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.*;
import lombok.EqualsAndHashCode;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.io.Serializable;
import java.util.List;
/**
* OrganizeUser
@ -63,5 +60,4 @@ public class OrganizeUser implements Serializable {
@ApiModelProperty(value = "更新人")
@Column(name = "update_by")
private Long updateBy;
}

@ -2,11 +2,11 @@ package com.baiye.modules.system.rest;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.OrganizeQueryCriteria;
import com.baiye.modules.system.service.dto.OrganizeDto;
import com.baiye.modules.system.service.dto.OrganizeMemberDistributionDTO;
import com.baiye.modules.system.service.dto.OrganizeSaveDTO;
import com.baiye.modules.system.service.OrganizeService;
import com.baiye.modules.system.service.dto.OrganizeQueryCriteria;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@ -16,6 +16,8 @@ import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author YQY
* @date 2021-12-13
@ -36,7 +38,7 @@ public class OrganizeController {
@ApiOperation("查询组")
@PostMapping("/queryAll")
public ResponseEntity<Object> queryAll(@RequestBody OrganizeQueryCriteria organizeQueryCriteria){
public ResponseEntity<List<OrganizeDto>> queryAll(@RequestBody OrganizeQueryCriteria organizeQueryCriteria){
return new ResponseEntity<>(organizeService.queryAll(organizeQueryCriteria),HttpStatus.OK);
}

@ -17,6 +17,7 @@ package com.baiye.modules.system.rest;
import cn.hutool.core.collection.CollectionUtil;
import com.baiye.config.properties.RsaProperties;
import com.baiye.constant.RoleNumberConstants;
import com.baiye.exception.BadRequestException;
import com.baiye.modules.system.domain.Dept;
import com.baiye.modules.system.domain.User;
@ -178,6 +179,7 @@ public class UserController {
*/
private void checkLevel(User resources) {
Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList()));
Integer optLevel = roleService.findByRoles(resources.getRoles());
if (currentLevel > optLevel) {
throw new BadRequestException("角色权限不足");
@ -189,4 +191,10 @@ public class UserController {
public ResponseEntity<Object> getAdminInfo(@RequestBody List<Long> roleIds) {
return new ResponseEntity<>(userService.findByManager(roleIds), HttpStatus.OK);
}
@ApiOperation("查询所有的组长")
@GetMapping(value = "/leader")
public ResponseEntity<Object> getLeaderList() {
return new ResponseEntity<>(userService.queryRoleUser(RoleNumberConstants.MINUS_NINE_NUMBER), HttpStatus.OK);
}
}

@ -1,16 +1,13 @@
package com.baiye.modules.system.service;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.modules.system.domain.Organize;
import com.baiye.model.dto.OrganizeQueryCriteria;
import com.baiye.modules.system.service.dto.OrganizeMemberDistributionDTO;
import com.baiye.modules.system.service.dto.OrganizeSaveDTO;
import com.baiye.modules.system.service.dto.OrganizeDto;
import com.baiye.modules.system.service.dto.OrganizeQueryCriteria;
import com.baiye.modules.system.service.dto.UserDto;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -34,14 +31,7 @@ public interface OrganizeService {
*
* @return
*/
HashMap<String, Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable);
/**
*
* @param organize
* @return
*/
ResponseEntity<Object> updateOrganize(Organize organize);
Map<String, Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable);
/**
*

@ -134,4 +134,11 @@ public interface UserService {
* @return
*/
List<UserDto> findByManager(List<Long> roleIds);
/**
*
* @param roleId
* @return
*/
List<UserDto> queryRoleUser(Long roleId);
}

@ -7,8 +7,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@ -56,4 +54,10 @@ public class OrganizeDto implements Serializable {
@ApiModelProperty(value = "小组下的任务信息")
private Task organizeTask;
@ApiModelProperty(value = "组长标签")
private List<String> organizeLabel;
@ApiModelProperty(value = "返回的任务内管理员定义标签")
private List<String> baseLabel;
}

@ -1,13 +1,12 @@
package com.baiye.modules.system.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sun.istack.internal.NotNull;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import java.sql.Timestamp;
import java.util.List;

@ -1,6 +1,5 @@
package com.baiye.modules.system.service.dto;
import com.baiye.modules.system.domain.Organize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ -33,4 +32,6 @@ public class TaskDto implements Serializable {
private Date updateTime;
private List<Organize> organizeList;
private List<String> baseLabel;
}

@ -1,7 +1,6 @@
package com.baiye.modules.system.service.impl;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.RoleNumberConstants;
import com.baiye.feign.AssignDataClient;
import com.baiye.feign.SourceClueClient;
import com.baiye.http.CommonResponse;
@ -9,28 +8,27 @@ import com.baiye.http.ResponseCode;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.DistributeDTO;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.model.dto.OrganizeQueryCriteria;
import com.baiye.modules.system.domain.*;
import com.baiye.modules.system.repository.OrganizeRepository;
import com.baiye.modules.system.repository.OrganizeUserRepository;
import com.baiye.modules.system.repository.TaskRepository;
import com.baiye.modules.system.service.LabelService;
import com.baiye.modules.system.service.OrganizeService;
import com.baiye.modules.system.service.UserService;
import com.baiye.modules.system.service.dto.*;
import com.baiye.modules.system.service.mapstruct.OrganizeMapper;
import com.baiye.modules.system.service.mapstruct.OrganizeUserMapper;
import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
@ -47,8 +45,6 @@ public class OrganizeServiceImpl implements OrganizeService {
private final SourceClueClient sourceClueClient;
private final TaskRepository taskRepository;
private final UserService userService;
private final LabelService labelService;
/**
*
@ -75,35 +71,30 @@ public class OrganizeServiceImpl implements OrganizeService {
organizeUserRepository.save(organizeUser);
deptIds.add(saveOrganize.getId());
clueList = sourceClueClient.queryList(organizeSaveDTO.getTaskId()).getBody();
//任务状态更新
taskRepository.updateIsDistribution(1, organizeSaveDTO.getTaskId());
//任务状态更新,创建标签
Task task = taskRepository.findById(organizeSaveDTO.getTaskId()).orElseGet(Task::new);
// 标签去重
List<String> labelNameList = organizeSaveDTO.getLabelNameList();
List<String> labelName = new ArrayList<>(new TreeSet<String>(labelNameList));
task.setBaseLabel(labelName);
task.setIsDistribution(1);
weights.add(saveOrganize.getRatio());
}
//总管理员给小组分配任务
DistributeDTO distributeDTO = new DistributeDTO();
distributeDTO.setDeptIds(deptIds);
distributeDTO.setResourceList(clueList);
distributeDTO.setResourceList(clueList);
distributeDTO.setWeights(weights);
List<DistributeResponseDTO> data = assignDataClient.dataDistribution(distributeDTO).getData();
//线索更新
if (data.size() > 0){
for (DistributeResponseDTO distributeResponseDTO : data) {
sourceClueClient.batchUpdateOrganize(distributeResponseDTO);
//获取小组此次获取的数据
//更新小组此次获取的数据条数
int organizeTaskNum = distributeResponseDTO.getResponseList().size();
organizeRepository.updateByOrganizeTaskNum(distributeResponseDTO.getDeptId(),organizeTaskNum);
}
}
//创建标签
List<String> labelNameList = organizeSaveDTO.getLabelNameList();
if (labelNameList.size() > 0) {
for (String labelName : labelNameList) {
Label label = new Label();
label.setLabelName(labelName);
label.setLevel(DefaultNumberConstants.ONE_NUMBER);
labelService.create(label);
}
}
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
@ -128,41 +119,30 @@ public class OrganizeServiceImpl implements OrganizeService {
*
*/
@Override
public HashMap<String, Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable) {
public Map<String, Object> queryLeaderTaskList(OrganizeQueryCriteria organizeQueryCriteria, Pageable pageable) {
List<OrganizeDto> organizeDtoList = new ArrayList<>();
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
HashMap<String, Object> hashMap = new HashMap<>();
List<List<OrganizeDto>> organizeDtoList = new ArrayList<>();
Long userId = SecurityUtils.getCurrentUserId();
// 查询用户下的所有组ID
OrganizeUserQueryCriteria organizeUserQueryCriteria = new OrganizeUserQueryCriteria();
organizeUserQueryCriteria.setUserId(userId);
Page<OrganizeUser> organizeUserRepositoryAll = organizeUserRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, organizeUserQueryCriteria, criteriaBuilder), pageable);
Page<OrganizeUserDto> map = organizeUserRepositoryAll.map(organizeUserMapper::toDto);
if (!map.isEmpty()) {
for (OrganizeUserDto organizeUserDto : map) {
organizeUserQueryCriteria.setUserId(SecurityUtils.getCurrentUserId());
List<OrganizeUserDto> organizeUserDtos = organizeUserMapper.toDto(organizeUserRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, organizeQueryCriteria, criteriaBuilder), sort));
for (OrganizeUserDto organizeUserDto : organizeUserDtos) {
if (organizeUserDto.getIsLeader()) {
//查询组并且是组长的组信息
organizeQueryCriteria.setId(organizeUserDto.getOrganizeId());
// 查询组长的组
List<OrganizeDto> organizeDtos = organizeMapper.toDto(organizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, organizeQueryCriteria, criteriaBuilder),sort));
if (organizeDtos.size() > 0) {
organizeDtoList.add(organizeDtos);
}
//返回信息中加入任务(管理员)标签信息
for (OrganizeDto organizeDto : organizeDtos) {
Task task = taskRepository.findById(organizeDto.getTaskId()).orElseGet(Task::new);
organizeDto.setBaseLabel(task.getBaseLabel());
}
organizeDtoList.addAll(organizeDtos);
}
}
hashMap.put("content", organizeDtoList);
hashMap.put("totalElements", organizeDtoList.size());
return hashMap;
}
return null;
}
/**
*
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> updateOrganize(Organize organize) {
organizeRepository.save(organize);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
return PageUtil.toPage(
PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(), organizeDtoList),
organizeDtoList.size()
);
}
/**
@ -173,30 +153,29 @@ public class OrganizeServiceImpl implements OrganizeService {
public ResponseEntity<Object> saveMemberDistribution(OrganizeMemberDistributionDTO organizeMemberDistributionDTO) {
List<Long> userIds = organizeMemberDistributionDTO.getUserIds();
Long organizeId = organizeMemberDistributionDTO.getOrganizeId();
// 修改组内标签
if (!CollectionUtils.isEmpty(organizeMemberDistributionDTO.getSourceLabel())) {
organizeRepository.updateOrganizeLabelById
(JSONUtil.toJsonStr(organizeMemberDistributionDTO.getSourceLabel()), organizeId);
}
// 新增小组成员
for (Long userId : userIds) {
OrganizeUser organizeUser = new OrganizeUser();
organizeUser.setUserId(userId);
organizeUser.setOrganizeId(organizeId);
organizeUser.setCreateBy(SecurityUtils.getCurrentUserId());
organizeUserRepository.save(organizeUser);
}
//分配组员资源
ClueQueryCriteria clueQueryCriteria = new ClueQueryCriteria();
clueQueryCriteria.setOrganizeId(organizeId);
clueQueryCriteria.setUserIds(userIds);
//调用资源服务
//修改资源服务信息
sourceClueClient.queryOrganizeIdList(clueQueryCriteria);
//更新小组任务信息
//修改小组任务信息
Organize updateOrganize = organizeRepository.findById(organizeMemberDistributionDTO.getOrganizeId()).orElseGet(Organize::new);
updateOrganize.setTaskStatus(1);
updateOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime());
updateOrganize.setEndTime(organizeMemberDistributionDTO.getEndTime());
//标签去重
List<String> sourceLabelList = organizeMemberDistributionDTO.getSourceLabel();
List<String> sourceLabe = new ArrayList<>(new TreeSet<String>(sourceLabelList));
updateOrganize.setOrganizeLabel(sourceLabe);
organizeRepository.save(updateOrganize);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}
@ -206,9 +185,8 @@ public class OrganizeServiceImpl implements OrganizeService {
*/
@Override
public List<UserDto> selectMemberList(OrganizeQueryCriteria organizeQueryCriteria) {
// TODO
//查询所有用户
List<UserDto> userDtoList = userService.queryAll(new UserQueryCriteria());
List<UserDto> userDtoList = userService.queryRoleUser(RoleNumberConstants.MINUS_FIVE_NUMBER);
// 任务内组员用户ID集合
List<Long> userList = new ArrayList<>();
//查询任务下的所有组员用户
@ -219,7 +197,7 @@ public class OrganizeServiceImpl implements OrganizeService {
userList.add(organizeUser.getUserId());
}
}
// 去除任务内重复的用户
// 去除同一个任务内重复的用户
Iterator<UserDto> it = userDtoList.iterator();
while(it.hasNext()){
Long id = it.next().getId();

@ -65,6 +65,7 @@ public class TaskServiceImpl implements TaskService {
Page<Task> taskRepositoryAll = taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder), pageable);
Page<TaskDto> map = taskRepositoryAll.map(taskMapper::toDto);
for (TaskDto taskDto : map) {
//任务下的小组信息加入
selectOrganizeUser(taskDto);
}
return PageUtil.toPage(map);

@ -15,7 +15,6 @@
*/
package com.baiye.modules.system.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import com.baiye.config.properties.FileProperties;
import com.baiye.constant.DefaultNumberConstants;
@ -95,6 +94,12 @@ public class UserServiceImpl implements UserService {
return userMapper.toDto(users);
}
@Override
public List<UserDto> queryRoleUser(Long roleId) {
List<User> userList = userRepository.findByRoleId(roleId);
return userMapper.toDto(userList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(User resources) {

@ -0,0 +1,22 @@
package com.baiye.feign;
import com.baiye.feign.fallback.OrganizeClientFallback;
import com.baiye.model.dto.OrganizeQueryCriteria;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(value = "ad-platform-management",fallback = OrganizeClientFallback.class)
public interface OrganizeClient {
String PAY_PREFIX = "/api/organize";
/**
*
* @param organizeQueryCriteria
* @return
*/
@PostMapping(value = PAY_PREFIX + "/queryAll")
ResponseEntity<Object> queryAll(@RequestBody OrganizeQueryCriteria organizeQueryCriteria);
}

@ -1,6 +1,7 @@
package com.baiye.feign;
import com.baiye.feign.fallback.TaskClientFallback;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.module.entity.Task;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
@ -19,4 +20,7 @@ public interface TaskClient {
*/
@PostMapping(value = PAY_PREFIX + "/saveTask")
ResponseEntity<Object> saveTask(@RequestBody Task task);
@PostMapping(PAY_PREFIX + "/query")
ResponseEntity<Object> query(@RequestBody TaskQueryCriteria taskQueryCriteria);
}

@ -0,0 +1,14 @@
package com.baiye.feign.fallback;
import com.baiye.feign.OrganizeClient;
import com.baiye.model.dto.OrganizeQueryCriteria;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
@Component
public class OrganizeClientFallback implements OrganizeClient {
@Override
public ResponseEntity<Object> queryAll(OrganizeQueryCriteria organizeQueryCriteria) {
return null;
}
}

@ -1,6 +1,7 @@
package com.baiye.feign.fallback;
import com.baiye.feign.TaskClient;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.module.entity.Task;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
@ -11,4 +12,9 @@ public class TaskClientFallback implements TaskClient {
public ResponseEntity<Object> saveTask(Task task) {
return null;
}
@Override
public ResponseEntity<Object> query(TaskQueryCriteria taskQueryCriteria) {
return null;
}
}

@ -5,7 +5,7 @@ import com.baiye.http.ResponseCode;
import com.baiye.model.dto.ClueDto;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.ClueMiddle;
import com.baiye.module.service.ClueService;
import com.baiye.module.service.dto.ClueRecordCriteria;
import io.swagger.annotations.Api;
@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@ -72,6 +73,13 @@ public class ClueController {
return new ResponseEntity<>(clueService.query(clueQueryCriteria),HttpStatus.OK);
}
@ApiOperation("更新资源信息")
@PostMapping("/update")
public CommonResponse<Object> update(@Validated @RequestBody ClueMiddle clueMiddle){
clueService.update(clueMiddle);
return CommonResponse.createBySuccess();
}
@ApiOperation("查询组员资源总数")
@GetMapping("/queryMemberNum")
public ResponseEntity<Object> queryMemberNum(@RequestParam("memberId") Long memberId){

@ -0,0 +1,99 @@
package com.baiye.module.dao;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import com.baiye.model.dto.ClueDto;
import com.baiye.model.dto.ClueQueryCriteria;
import org.apache.commons.lang.StringUtils;
import org.hibernate.query.internal.NativeQueryImpl;
import org.hibernate.transform.Transformers;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.transaction.Transactional;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class ClueJpa {
@PersistenceContext
EntityManager entityManager;
@Transactional(rollbackOn = Exception.class)
public List<ClueDto> getConfirmReceipt(@RequestBody ClueQueryCriteria clueQueryCriteria) {
StringBuilder sql;
sql = getSql();
String name = clueQueryCriteria.getName();
Integer origin = clueQueryCriteria.getOrigin();
if (StringUtils.isNotBlank(name)){
sql.append("and c.name = :name ");
}
if (origin != null){
sql.append("and c.origin = :origin ");
}
if (clueQueryCriteria.getMemberId() != null){
sql.append("and cm.member_id = :memberId ");
}
if (clueQueryCriteria.getMemberStatus() != null){
sql.append("and cm.member_status = :memberStatus ");
}
sql.append("ORDER BY c.create_time desc" );
Query query = entityManager.createNativeQuery(sql.toString());
if (StringUtils.isNotBlank(name)){
query.setParameter("name", name);
}
if (origin != null){
query.setParameter("origin", origin);
}
if (clueQueryCriteria.getMemberId() != null){
query.setParameter("memberId", clueQueryCriteria.getMemberId());
}
if (clueQueryCriteria.getMemberStatus() != null){
query.setParameter("memberStatus", clueQueryCriteria.getMemberStatus());
}
query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List list = query.getResultList();
return getTradeInfo(list);
}
private StringBuilder getSql() {
StringBuilder sql = new StringBuilder();
sql.append("select c.id as id,c.name as name,c.nid as nid,c.wx as wx,c.origin as origin,c.collect_time as collectTime,c.address as address,c.record_id as recordId," +
"c.create_time as createTime,c.remark as remark,cm.member_status as memberStatus,cm.organize_id as organizeId,cm.member_id as memberId,cm.source_label as sourceLabel from tb_clue as c LEFT JOIN tb_clue_middle as cm on c.id = cm.clue_id where 1=1 ");
return sql;
}
private List<ClueDto> getTradeInfo(List list) {
List<ClueDto> clueDtoList = new ArrayList<>();
for (Object obj : list) {
Map row = (Map) obj;
ClueDto clueDto = new ClueDto();
BigInteger id = (BigInteger) row.get("id");
clueDto.setId(id.longValue());
JSONArray sourceLabel = JSONUtil.parseArray(row.get("sourceLabel"));
clueDto.setSourceLabel(sourceLabel);
clueDto.setMemberStatus((Integer) row.get("memberStatus"));
clueDto.setName((String) row.get("name"));
clueDto.setCreateTime((Date) row.get("createTime"));
clueDto.setNid((String) row.get("nid"));
clueDto.setWx((String) row.get("wx"));
clueDto.setAddress((String) row.get("address"));
clueDto.setRemark((String) row.get("remark"));
clueDto.setOrigin((Integer) row.get("origin"));
clueDto.setCollectTime((Date) row.get("collectTime"));
BigInteger organizeId = (BigInteger) row.get("organizeId");
clueDto.setOrganizeId(organizeId.longValue());
BigInteger memberId = (BigInteger) row.get("memberId");
clueDto.setMemberId(memberId.longValue());
clueDtoList.add(clueDto);
}
return clueDtoList;
}
}

@ -0,0 +1,53 @@
package com.baiye.module.dao;
import com.baiye.module.entity.ClueMiddle;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ClueMiddleRepository extends JpaRepository<ClueMiddle, Long>, JpaSpecificationExecutor<ClueMiddle> {
/**
* id
* @param taskId
* @return
*/
List<ClueMiddle> findByTaskId(Long taskId);
/**
*
* @param id
* @param deptId
*/
@Modifying
@Query(value = " update tb_clue_middle set organize_id = ?2 where clue_id = ?1 ",nativeQuery = true)
void updateOrganizeIdById(Long id,Long deptId);
/**
* id
* @param organizeId
* @return
*/
List<ClueMiddle> findByOrganizeId(Long organizeId);
/**
*
* @param clueId
* @param userId
*/
@Modifying
@Query(value = " update tb_clue_middle set member_id = ?3,member_status = ?2 where clue_id = ?1 ",nativeQuery = true)
void updateUserId(Long clueId, Integer memberStatus,Long userId);
/**
*
* @param memberId
* @return
*/
Long countByMemberId(Long memberId);
}

@ -3,51 +3,9 @@ package com.baiye.module.dao;
import com.baiye.module.entity.Clue;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ClueRepository extends JpaRepository<Clue, Long>, JpaSpecificationExecutor<Clue> {
/**
* recordId
* @param recordId
* @return
*/
List<Clue> findByRecordId(Long recordId);
/**
*
* @param id
* @param deptId
*/
@Modifying
@Query(value = " update tb_clue set organize_id = ?2 where id = ?1 ",nativeQuery = true)
void updateOrganizeIdById(Long id,Long deptId);
/**
* id
* @param organizeId
* @return
*/
List<Clue> findByOrganizeId(Long organizeId);
/**
*
* @param clueId
* @param userId
*/
@Modifying
@Query(value = " update tb_clue set member_id = ?3,member_status = ?2 where id = ?1 ",nativeQuery = true)
void updateUserId(Long clueId, Integer memberStatus,Long userId);
/**
*
* @param memberId
* @return
*/
Long countByMemberId(Long memberId);
}

@ -0,0 +1,56 @@
package com.baiye.module.entity;
import com.baiye.util.JpaConverterListJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
* ClueMiddle
*
* @author yqy
* @date 2021-12-07 10:40:37
*/
@Data
@Entity
@Table(name = "tb_clue_middle")
@ApiModel(value = "ClueMiddle")
public class ClueMiddle{
@Id
@ApiModelProperty(value = "线索id")
@Column(name = "clue_id")
@NotNull
private Long clueId;
@ApiModelProperty(value = "小组id")
@Column(name = "organize_id")
private Long organizeId;
@ApiModelProperty(value = "所属组员id")
@Column(name = "member_id")
private Long memberId;
@ApiModelProperty(value = "任务id")
@Column(name = "task_id")
private Long taskId;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
@Column(name = "member_status")
private Integer memberStatus;
@Convert(converter = JpaConverterListJson.class)
private List<String> sourceLabel;
@ApiModelProperty(value = "创建时间")
@Column(name = "create_time", nullable = true)
@CreationTimestamp
private Date createTime;
}

@ -2,7 +2,6 @@ package com.baiye.module.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.module.constant.FileConstant;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.vo.BaseExcelVo;
@ -70,11 +69,10 @@ public class KsExcelListener extends AnalysisEventListener<KsVo> {
clue.setOrigin(baseExcelVo.getOrigin());
clue.setRecordId(baseExcelVo.getClueRecordId());
clue.setCreateBy(baseExcelVo.getUserId());
clue.setMemberStatus(DefaultNumberConstants.ZERO_NUMBER);
clues.add(clue);
}
if (clues.size() > 0) {
clueService.saveClue(clues);
clueService.saveClue(clues,baseExcelVo.getTaskId());
}
}
}

@ -6,7 +6,6 @@ import cn.hutool.core.text.csv.CsvData;
import cn.hutool.core.text.csv.CsvReader;
import cn.hutool.core.text.csv.CsvRow;
import cn.hutool.core.text.csv.CsvUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.module.constant.FileConstant;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.vo.BaseExcelVo;
@ -52,20 +51,20 @@ public class UcCsvListener {
clue.setOrigin(baseExcelVo.getOrigin());
clue.setRecordId(baseExcelVo.getClueRecordId());
clue.setCreateBy(baseExcelVo.getUserId());
clue.setMemberStatus(DefaultNumberConstants.ZERO_NUMBER);
// clue.setMemberStatus(DefaultNumberConstants.ZERO_NUMBER);
clues.add(clue);
}
//1000条插入一次
if (clues.size() > FileConstant.ONE_THOUSAND_NUMBER){
// if (clues.size() > 2){
clueService.saveClue(clues);
clueService.saveClue(clues,baseExcelVo.getTaskId());
clues.clear();
}
index++;
}
//清除集合数据
if (clues.size() > 0) {
clueService.saveClue(clues);
clueService.saveClue(clues,baseExcelVo.getTaskId());
}
}
}

@ -2,7 +2,6 @@ package com.baiye.module.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.module.constant.FileConstant;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.vo.BaseExcelVo;
@ -65,11 +64,10 @@ public class UcExcelListener extends AnalysisEventListener<UcVo> {
clue.setOrigin(baseExcelVo.getOrigin());
clue.setRecordId(baseExcelVo.getClueRecordId());
clue.setCreateBy(baseExcelVo.getUserId());
clue.setMemberStatus(DefaultNumberConstants.ZERO_NUMBER);
clues.add(clue);
}
if (clues.size() > 0) {
clueService.saveClue(clues);
clueService.saveClue(clues,baseExcelVo.getTaskId());
}
}
}

@ -2,7 +2,6 @@ package com.baiye.module.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.module.constant.FileConstant;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.vo.BaseExcelVo;
@ -69,11 +68,10 @@ public class ZdyExcelListener extends AnalysisEventListener<ZdyVo> {
clue.setOrigin(baseExcelVo.getOrigin());
clue.setRecordId(baseExcelVo.getClueRecordId());
clue.setCreateBy(baseExcelVo.getUserId());
clue.setMemberStatus(DefaultNumberConstants.ZERO_NUMBER);
clues.add(clue);
}
if (clues.size() > 0) {
clueService.saveClue(clues);
clueService.saveClue(clues,baseExcelVo.getTaskId());
}
}
}

@ -4,6 +4,7 @@ import com.baiye.model.dto.ClueDto;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.ClueMiddle;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.service.dto.ClueRecordCriteria;
import org.springframework.data.domain.Page;
@ -18,8 +19,9 @@ public interface ClueService {
/**
*
* @param clueList
* @param taskId
*/
void saveClue(List<Clue> clueList);
void saveClue(List<Clue> clueList,Long taskId);
/**
* id
@ -81,4 +83,9 @@ public interface ClueService {
* @param clueQueryCriteria
*/
void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria);
/**
*
*/
void update(ClueMiddle clueMiddle);
}

@ -0,0 +1,27 @@
package com.baiye.module.service.dto;
import com.baiye.annotation.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*/
@Data
public class ClueMiddleCriteria {
@Query
private Long createBy;
@ApiModelProperty(value = "小组id")
@Query
private Long organizeId;
@ApiModelProperty(value = "所属组员id")
@Query
private Long memberId;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
@Query
private Integer memberStatus;
}

@ -0,0 +1,34 @@
package com.baiye.module.service.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class ClueMiddleDto implements Serializable {
@ApiModelProperty(value = "线索id")
private Long clueId;
@ApiModelProperty(value = "小组id")
private Long organizeId;
@ApiModelProperty(value = "所属组员id")
private Long memberId;
@ApiModelProperty(value = "任务id")
private Long taskId;
@ApiModelProperty(value = "组员跟进状态 0无状态 1进行中 2已完成")
private Integer memberStatus;
private List<String> sourceLabel;
}

@ -12,6 +12,7 @@ import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Getter
@Setter
@ -84,4 +85,13 @@ public class ExcelClueDto implements Serializable {
@ExcelIgnore
private Long taskId;
@ExcelIgnore
private Object sourceLabel;
@ExcelIgnore
private List<String> organizeLabel;
@ExcelIgnore
private List<String> baseLabel;
}

@ -1,38 +1,35 @@
package com.baiye.module.service.impl;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.model.dto.ClueDto;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.feign.OrganizeClient;
import com.baiye.feign.TaskClient;
import com.baiye.model.dto.*;
import com.baiye.module.dao.ClueJpa;
import com.baiye.module.dao.ClueMiddleRepository;
import com.baiye.module.dao.ClueRecordRepository;
import com.baiye.module.dao.ClueRepository;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.ClueMiddle;
import com.baiye.module.entity.ClueRecord;
import com.baiye.module.service.ClueService;
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.ClueMapper;
import com.baiye.module.service.dto.*;
import com.baiye.module.service.mapstruct.ClueRecordMapper;
import com.baiye.util.AverageDataUtil;
import com.baiye.util.ExportExcelUtil;
import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
@Service
@Slf4j
@ -41,26 +38,38 @@ public class ClueServiceImpl implements ClueService {
private final ClueRepository clueRepository;
private final ClueRecordRepository clueRecordRepository;
private final ClueMapper clueMapper;
private final ClueRecordMapper clueRecordMapper;
private final ClueMiddleRepository clueMiddleRepository;
private final ClueJpa clueJpa;
private final OrganizeClient organizeClient;
private final TaskClient taskClient;
@Override
public void saveClue(List<Clue> clueList) {
public void saveClue(List<Clue> clueList,Long taskId) {
if (clueList.size() > 0){
clueRepository.saveAll(clueList);
List<Clue> clueListAll = clueRepository.saveAll(clueList);
//插入中间表数据
for (Clue clue : clueListAll) {
ClueMiddle clueMiddle = new ClueMiddle();
clueMiddle.setClueId(clue.getId());
clueMiddle.setTaskId(taskId);
clueMiddle.setMemberStatus(DefaultNumberConstants.ZERO_NUMBER);
clueMiddleRepository.save(clueMiddle);
}
}
}
/**
* id
*/
@Override
public List<Long> queryList(Long taskId) {
List<Long> clueLists = new ArrayList<>();
List<ClueRecord> clueRecordList = clueRecordRepository.findByTaskId(taskId);
if (clueRecordList.size() > 0) {
for (ClueRecord clueRecord : clueRecordList) {
List<Clue> clueList = clueRepository.findByRecordId(clueRecord.getId());
for (Clue clue : clueList) {
clueLists.add(clue.getId());
}
List<ClueMiddle> clueMiddleList = clueMiddleRepository.findByTaskId(taskId);
if (clueMiddleList.size() > 0) {
for (ClueMiddle clueMiddle : clueMiddleList) {
// Clue clue = clueRepository.findById(clueMiddle.getClueId()).orElseGet(Clue::new);
clueLists.add(clueMiddle.getClueId());
}
return clueLists;
}
@ -73,25 +82,31 @@ public class ClueServiceImpl implements ClueService {
return clueAll;
}
/**
*
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void batchUpdateOrganize(DistributeResponseDTO distributeResponseDTO) {
List<Long> responseList = distributeResponseDTO.getResponseList();
Long deptId = distributeResponseDTO.getDeptId();
for (Long id : responseList) {
clueRepository.updateOrganizeIdById(id,deptId);
clueMiddleRepository.updateOrganizeIdById(id,deptId);
}
}
/**
* id
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) {
//资源id集合
List<Long> clueIds = new ArrayList<>();
//查询此小组下的所有资源id
List<Clue> clueList = clueRepository.findByOrganizeId(clueQueryCriteria.getOrganizeId());
for (Clue clue : clueList) {
clueIds.add(clue.getId());
List<ClueMiddle> clueMiddleList = clueMiddleRepository.findByOrganizeId(clueQueryCriteria.getOrganizeId());
for (ClueMiddle clueMiddle : clueMiddleList) {
clueIds.add(clueMiddle.getClueId());
}
//小组内资源分配
//Map<Long, List<Long>>用户id -> 资源ID集合
@ -101,7 +116,7 @@ public class ClueServiceImpl implements ClueService {
for (Long userId : map.keySet()) {
List<Long> userIdList = map.get(userId);
for (Long clueId : userIdList) {
clueRepository.updateUserId(clueId, DefaultNumberConstants.ONE_NUMBER, userId);
clueMiddleRepository.updateUserId(clueId, DefaultNumberConstants.ONE_NUMBER, userId);
}
}
}
@ -112,15 +127,33 @@ public class ClueServiceImpl implements ClueService {
*/
@Override
public Map<String,Object> queryAll(ClueQueryCriteria clueQueryCriteria ,Pageable pageable) {
// Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
// Pageable pageable = PageRequest.of(clueQueryCriteria.getPage(), clueQueryCriteria.getSize(),sort);
Page<Clue> cluePage = clueRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, clueQueryCriteria, criteriaBuilder), pageable);
Page<ClueDto> map = cluePage.map(clueMapper::toDto);
for (ClueDto clueDto : map) {
ClueRecord clueRecord = clueRecordRepository.findById(clueDto.getRecordId()).orElseGet(ClueRecord::new);
clueDto.setTaskId(clueRecord.getTaskId());
if (clueQueryCriteria.getMemberId() != null) {
List<ClueDto> clueDtoList = clueJpa.getConfirmReceipt(clueQueryCriteria);
for (ClueDto clueDto : clueDtoList) {
OrganizeQueryCriteria organizeQueryCriteria = new OrganizeQueryCriteria();
organizeQueryCriteria.setId(clueDto.getOrganizeId());
List list = (List)organizeClient.queryAll(organizeQueryCriteria).getBody();
for (Object obj : list) {
JSONObject organizeDto = JSONUtil.parseObj(obj);
List<String> organizeLabel = (List<String>)organizeDto.get("organizeLabel");
clueDto.setOrganizeLabel(organizeLabel);
}
TaskQueryCriteria taskQueryCriteria = new TaskQueryCriteria();
taskQueryCriteria.setId(clueDto.getTaskId());
List taskList = (List)taskClient.query(taskQueryCriteria).getBody();
for (Object obj : taskList) {
JSONObject taskDto = JSONUtil.parseObj(obj);
List<String> baseLabel = (List<String>)taskDto.get("baseLabel");
clueDto.setBaseLabel(baseLabel);
}
}
return PageUtil.toPage(
PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(), clueDtoList),
clueDtoList.size()
);
}
return PageUtil.toPage(map);
return null;
}
/**
@ -130,9 +163,11 @@ public class ClueServiceImpl implements ClueService {
*/
@Override
public List<ClueDto> query(ClueQueryCriteria clueQueryCriteria) {
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
List<ClueDto> clueDtos = clueMapper.toDto(clueRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, clueQueryCriteria, criteriaBuilder), sort));
return clueDtos;
if (clueQueryCriteria.getMemberId() != null) {
List<ClueDto> clueDtoList = clueJpa.getConfirmReceipt(clueQueryCriteria);
return clueDtoList;
}
return null;
}
/**
@ -140,7 +175,7 @@ public class ClueServiceImpl implements ClueService {
*/
@Override
public Long queryMemberNum(Long memberId) {
return clueRepository.countByMemberId(memberId);
return clueMiddleRepository.countByMemberId(memberId);
}
/**
@ -155,12 +190,32 @@ public class ClueServiceImpl implements ClueService {
}
}
/**
* ()
*/
@Override
public void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria) {
if (clueQueryCriteria.getMemberId() != null) {
Sort sort = Sort.by(Sort.Direction.ASC, "createTime");
List<ClueDto> clueDtos = clueMapper.toDto(clueRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, clueQueryCriteria, criteriaBuilder), sort));
ExportExcelUtil.downloadEasyExcel(response, ExcelClueDto.class,clueDtos);
List<ClueDto> clueDtoList = clueJpa.getConfirmReceipt(clueQueryCriteria);
ExportExcelUtil.downloadEasyExcel(response, ExcelClueDto.class,clueDtoList);
}
}
/**
*
*/
@Override
public void update(ClueMiddle clueMiddle) {
ClueMiddle clueMiddleOne = clueMiddleRepository.findById(clueMiddle.getClueId()).orElseGet(ClueMiddle::new);
if (clueMiddle.getSourceLabel() != null) {
List<String> sourceLabelList = clueMiddle.getSourceLabel();
// 标签去重
List<String> sourceLabel = new ArrayList<String>(new TreeSet<String>(sourceLabelList));
clueMiddleOne.setSourceLabel(sourceLabel);
}
if (clueMiddle.getMemberStatus() != null) {
clueMiddleOne.setMemberStatus(clueMiddle.getMemberStatus());
}
clueMiddleRepository.save(clueMiddleOne);
}
}

@ -0,0 +1,11 @@
package com.baiye.module.service.mapstruct;
import com.baiye.model.base.BaseMapper;
import com.baiye.module.entity.ClueMiddle;
import com.baiye.module.service.dto.ClueMiddleDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ClueMiddleMapper extends BaseMapper<ClueMiddleDto, ClueMiddle> {
}

@ -41,6 +41,7 @@ public class FileAnalysisTask {
baseExcelVo.setUserId(clueRecord.getCreateBy());
baseExcelVo.setClueRecordId(clueRecord.getId());
baseExcelVo.setOrigin(clueRecord.getUploadType());
baseExcelVo.setTaskId(clueRecord.getTaskId());
FileInputStream file = new FileInputStream(clueRecord.getNewFileUrl());
switch (clueRecord.getUploadType()){

@ -3,7 +3,7 @@ package com.baiye.util;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.sun.istack.internal.NotNull;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;

Loading…
Cancel
Save