代码提交

master
yqy 3 years ago
parent e3fa19c891
commit 277b61518b

@ -33,7 +33,7 @@ public interface SourceClueClient {
@ApiOperation("小组id查询并分配组员资源") @ApiOperation("小组id查询并分配组员资源")
@PostMapping(API_PREFIX + "/queryOrganizeIdList") @PostMapping(API_PREFIX + "/queryOrganizeIdList")
void queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria); ResponseEntity<Long> queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria);
@ApiOperation("修改组") @ApiOperation("修改组")
@GetMapping(API_PREFIX + "/updateOrganize") @GetMapping(API_PREFIX + "/updateOrganize")

@ -25,8 +25,8 @@ public class SourceClueClientFallback implements SourceClueClient {
} }
@Override @Override
public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) { public ResponseEntity<Long> queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) {
return null;
} }
@Override @Override

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*; import javax.persistence.*;
import java.sql.Timestamp; import java.sql.Timestamp;
@ -19,6 +20,7 @@ import java.util.Map;
@Entity @Entity
@Table(name = "tb_task_organize") @Table(name = "tb_task_organize")
@ApiModel(value = "Task") @ApiModel(value = "Task")
@EntityListeners(AuditingEntityListener.class)
public class TaskOrganize { public class TaskOrganize {
@Id @Id

@ -60,10 +60,10 @@ public class User extends BaseEntity implements Serializable {
inverseJoinColumns = {@JoinColumn(name = "job_id",referencedColumnName = "job_id")}) inverseJoinColumns = {@JoinColumn(name = "job_id",referencedColumnName = "job_id")})
private Set<Job> jobs; private Set<Job> jobs;
@OneToOne /*@OneToOne
@JoinColumn(name = "dept_id") @JoinColumn(name = "dept_id")
@ApiModelProperty(value = "用户部门") @ApiModelProperty(value = "用户部门")
private Dept dept; private Dept dept;*/
@NotBlank @NotBlank
@Column(unique = true) @Column(unique = true)

@ -4,6 +4,7 @@ import com.baiye.annotation.Query;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.Column;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.List; import java.util.List;
@ -35,6 +36,10 @@ public class TaskOrganizeQueryCriteria {
@Query(type = Query.Type.BETWEEN) @Query(type = Query.Type.BETWEEN)
private List<Timestamp> createTime; private List<Timestamp> createTime;
@ApiModelProperty(value = "此次任务分配数量")
@Query(type = Query.Type.GREATER_THAN)
private Integer organizeTaskNum;
@ApiModelProperty(value = "标签名称") @ApiModelProperty(value = "标签名称")
private List<String> labelNameList; private List<String> labelNameList;
} }

@ -11,6 +11,7 @@ import com.baiye.modules.system.domain.*;
import com.baiye.modules.system.repository.*; import com.baiye.modules.system.repository.*;
import com.baiye.modules.system.service.OrganizeService; import com.baiye.modules.system.service.OrganizeService;
import com.baiye.modules.system.service.RoleService; import com.baiye.modules.system.service.RoleService;
import com.baiye.modules.system.service.UserMessageService;
import com.baiye.modules.system.service.UserService; import com.baiye.modules.system.service.UserService;
import com.baiye.modules.system.service.dto.*; import com.baiye.modules.system.service.dto.*;
import com.baiye.modules.system.service.mapstruct.OrganizeMapper; import com.baiye.modules.system.service.mapstruct.OrganizeMapper;
@ -18,10 +19,13 @@ import com.baiye.modules.system.service.mapstruct.OrganizeUserMapper;
import com.baiye.modules.system.service.mapstruct.TaskOrganizeMapper; import com.baiye.modules.system.service.mapstruct.TaskOrganizeMapper;
import com.baiye.util.*; import com.baiye.util.*;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import feign.FeignException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -29,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -48,6 +53,7 @@ public class OrganizeServiceImpl implements OrganizeService {
private final TaskOrganizeMapper taskOrganizeMapper; private final TaskOrganizeMapper taskOrganizeMapper;
private final RoleService roleService; private final RoleService roleService;
private final RedisUtils redisUtils; private final RedisUtils redisUtils;
private final UserMessageService userMessageService;
/** /**
* *
@ -210,6 +216,7 @@ public class OrganizeServiceImpl implements OrganizeService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> saveOrganizeDistribution(OrganizeSaveDTO organizeSaveDTO) { public ResponseEntity<Object> saveOrganizeDistribution(OrganizeSaveDTO organizeSaveDTO) {
List<Long> userIdList = new ArrayList<>();
List<Long> organizeIdList = new ArrayList<>(); List<Long> organizeIdList = new ArrayList<>();
List<Double> weights = new ArrayList<>(); List<Double> weights = new ArrayList<>();
// 验证组是否重复 // 验证组是否重复
@ -243,6 +250,7 @@ public class OrganizeServiceImpl implements OrganizeService {
List<String> labelName = new ArrayList<>(new TreeSet<>(labelNameList)); List<String> labelName = new ArrayList<>(new TreeSet<>(labelNameList));
task.setBaseLabel(labelName); task.setBaseLabel(labelName);
task.setIsDistribution(1); task.setIsDistribution(1);
task.setUpdateTime(new Date());
taskRepository.save(task); taskRepository.save(task);
// 分配任务引擎 // 分配任务引擎
DistributeDTO distributeDTO = new DistributeDTO(); DistributeDTO distributeDTO = new DistributeDTO();
@ -250,11 +258,16 @@ public class OrganizeServiceImpl implements OrganizeService {
distributeDTO.setResourceList(clueList); distributeDTO.setResourceList(clueList);
List<DistributeResponseDTO> data; List<DistributeResponseDTO> data;
distributeDTO.setWeights(weights); distributeDTO.setWeights(weights);
distributeDTO.setIsWeight(true);
data = assignDataClient.dataDistribution(distributeDTO).getData(); data = assignDataClient.dataDistribution(distributeDTO).getData();
// 线索更新 // 线索更新
if (data != null && data.size() > 0) { if (data != null && data.size() > 0) {
int index = 0; int index = 0;
for (DistributeResponseDTO distributeResponseDTO : data) { for (DistributeResponseDTO distributeResponseDTO : data) {
if (distributeResponseDTO.getResponseList().size() <= 0 ){
String organizeName = organizeRepository.findOrganizeById(distributeResponseDTO.getDeptId()).getOrganizeName();
throw new BadRequestException(organizeName + "比例过低分配数不低于0");
}
sourceClueClient.batchUpdateOrganize(distributeResponseDTO); sourceClueClient.batchUpdateOrganize(distributeResponseDTO);
// 添加小组-任务关联信息 // 添加小组-任务关联信息
int organizeTaskNum = distributeResponseDTO.getResponseList().size(); int organizeTaskNum = distributeResponseDTO.getResponseList().size();
@ -269,8 +282,17 @@ public class OrganizeServiceImpl implements OrganizeService {
taskOrganize.setRemark(organizeList.get(index).getRemark()); taskOrganize.setRemark(organizeList.get(index).getRemark());
index++; index++;
taskOrganizeRepository.save(taskOrganize); taskOrganizeRepository.save(taskOrganize);
// 发送通知的用户id
OrganizeUser organizeUser = organizeUserRepository.findByOrganizeIdAndIsLeader(distributeResponseDTO.getDeptId(), true);
userIdList.add(organizeUser.getUserId());
} }
} }
//发送通知
userIdList.add(SecurityUtils.getCurrentUserId());
MessageNotification messageNotification = new MessageNotification();
messageNotification.setMessageType(2);
messageNotification.setMessageContext(task.getTaskName() + "分配成功");
userMessageService.createUserMessage(userIdList,messageNotification);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK); return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
} }
@ -343,11 +365,13 @@ public class OrganizeServiceImpl implements OrganizeService {
@Override @Override
public Map<String, Object> queryLeaderTaskList(TaskOrganizeQueryCriteria taskOrganizeQueryCriteria, Pageable pageable) { public Map<String, Object> queryLeaderTaskList(TaskOrganizeQueryCriteria taskOrganizeQueryCriteria, Pageable pageable) {
PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "updateTime"));
Long currentUserId = SecurityUtils.getCurrentUserId(); Long currentUserId = SecurityUtils.getCurrentUserId();
Organize organize = organizeRepository.findOrganize(currentUserId); Organize organize = organizeRepository.findOrganize(currentUserId);
if (organize != null) { if (organize != null) {
taskOrganizeQueryCriteria.setOrganizeId(organize.getId()); taskOrganizeQueryCriteria.setOrganizeId(organize.getId());
Page<TaskOrganize> page = taskOrganizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskOrganizeQueryCriteria, criteriaBuilder), pageable); taskOrganizeQueryCriteria.setOrganizeTaskNum(1);
Page<TaskOrganize> page = taskOrganizeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskOrganizeQueryCriteria, criteriaBuilder), pageRequest);
Page<TaskOrganizeDto> taskOrganizeDtos = page.map(taskOrganizeMapper::toDto); Page<TaskOrganizeDto> taskOrganizeDtos = page.map(taskOrganizeMapper::toDto);
for (TaskOrganizeDto taskOrganizeDto : taskOrganizeDtos) { for (TaskOrganizeDto taskOrganizeDto : taskOrganizeDtos) {
Task task = taskRepository.findById(taskOrganizeDto.getTaskId()).orElseGet(Task::new); Task task = taskRepository.findById(taskOrganizeDto.getTaskId()).orElseGet(Task::new);
@ -387,18 +411,31 @@ public class OrganizeServiceImpl implements OrganizeService {
clueQueryCriteria.setOrganizeId(organizeId); clueQueryCriteria.setOrganizeId(organizeId);
clueQueryCriteria.setUserIds(userIds); clueQueryCriteria.setUserIds(userIds);
clueQueryCriteria.setTaskId(taskId); clueQueryCriteria.setTaskId(taskId);
sourceClueClient.queryOrganizeIdList(clueQueryCriteria); ResponseEntity<Long> rse = sourceClueClient.queryOrganizeIdList(clueQueryCriteria);
if (rse.getBody() != null) {
Long userId = rse.getBody();
UserDto user = userService.findById(userId);
throw new BadRequestException(user.getNickName() + "比例过低,分配数量不能低于0");
}
//修改小组任务信息 //修改小组任务信息
TaskOrganize updateTaskOrganize = taskOrganizeRepository.findByOrganizeIdAndTaskId(organizeId, taskId); TaskOrganize updateTaskOrganize = taskOrganizeRepository.findByOrganizeIdAndTaskId(organizeId, taskId);
updateTaskOrganize.setTaskStatus(1); updateTaskOrganize.setTaskStatus(1);
updateTaskOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime()); updateTaskOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime());
updateTaskOrganize.setEndTime(organizeMemberDistributionDTO.getEndTime()); updateTaskOrganize.setEndTime(organizeMemberDistributionDTO.getEndTime());
updateTaskOrganize.setUpdateTime(new Date());
if (organizeMemberDistributionDTO.getSourceLabel() != null) { if (organizeMemberDistributionDTO.getSourceLabel() != null) {
List<String> sourceLabelList = organizeMemberDistributionDTO.getSourceLabel(); List<String> sourceLabelList = organizeMemberDistributionDTO.getSourceLabel();
List<String> sourceLabe = new ArrayList<>(new TreeSet<>(sourceLabelList)); List<String> sourceLabe = new ArrayList<>(new TreeSet<>(sourceLabelList));
updateTaskOrganize.setOrganizeLabel(sourceLabe); updateTaskOrganize.setOrganizeLabel(sourceLabe);
} }
taskOrganizeRepository.save(updateTaskOrganize); taskOrganizeRepository.save(updateTaskOrganize);
//发送通知
userIds.add(SecurityUtils.getCurrentUserId());
List<Long> userIdList = new ArrayList<>(userIds);
MessageNotification messageNotification = new MessageNotification();
messageNotification.setMessageType(2);
messageNotification.setMessageContext(updateTaskOrganize.getOrganizeTaskName() + "分配成功");
userMessageService.createUserMessage(userIdList,messageNotification);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK); return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
} }

@ -22,6 +22,7 @@ import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@ -59,9 +60,9 @@ public class TaskServiceImpl implements TaskService {
*/ */
@Override @Override
public Object queryAll(TaskQueryCriteria taskQueryCriteria, Pageable pageable) { public Object queryAll(TaskQueryCriteria taskQueryCriteria, Pageable pageable) {
Long userId = SecurityUtils.getCurrentUserId(); PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "updateTime"));
taskQueryCriteria.setCreateBy(userId); taskQueryCriteria.setCreateBy(SecurityUtils.getCurrentUserId());
Page<Task> taskRepositoryAll = taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder), pageable); Page<Task> taskRepositoryAll = taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder), pageRequest);
Page<TaskDto> map = taskRepositoryAll.map(taskMapper::toDto); Page<TaskDto> map = taskRepositoryAll.map(taskMapper::toDto);
for (TaskDto taskDto : map) { for (TaskDto taskDto : map) {
//任务下的小组信息加入 //任务下的小组信息加入

@ -165,7 +165,7 @@ public class UserServiceImpl implements UserService {
user.setEmail(resources.getEmail()); user.setEmail(resources.getEmail());
user.setEnabled(resources.getEnabled()); user.setEnabled(resources.getEnabled());
user.setRoles(resources.getRoles()); user.setRoles(resources.getRoles());
user.setDept(resources.getDept()); // user.setDept(resources.getDept());
user.setJobs(resources.getJobs()); user.setJobs(resources.getJobs());
user.setPhone(resources.getPhone()); user.setPhone(resources.getPhone());
user.setNickName(resources.getNickName()); user.setNickName(resources.getNickName());

@ -70,8 +70,8 @@ public class ClueController {
@ApiOperation("小组id查询并分配组员资源") @ApiOperation("小组id查询并分配组员资源")
@PostMapping("/queryOrganizeIdList") @PostMapping("/queryOrganizeIdList")
public void queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria) { public ResponseEntity<Object> queryOrganizeIdList(@RequestBody ClueQueryCriteria clueQueryCriteria) {
clueService.queryOrganizeIdList(clueQueryCriteria); return clueService.queryOrganizeIdList(clueQueryCriteria);
} }
@ApiOperation("分页查询资源信息") @ApiOperation("分页查询资源信息")

@ -9,6 +9,7 @@ import com.baiye.module.entity.ClueRecord;
import com.baiye.module.service.dto.ClueRecordCriteria; import com.baiye.module.service.dto.ClueRecordCriteria;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
@ -53,7 +54,7 @@ public interface ClueService {
* @param clueQueryCriteria * @param clueQueryCriteria
* @return * @return
*/ */
void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria); ResponseEntity<Object> queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria);
/** /**
* *

@ -21,6 +21,8 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -92,7 +94,7 @@ public class ClueServiceImpl implements ClueService {
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) { public ResponseEntity<Object> queryOrganizeIdList(ClueQueryCriteria clueQueryCriteria) {
//查询此小组下的所有资源id //查询此小组下的所有资源id
List<ClueMiddle> clueMiddleList = new ArrayList<>(); List<ClueMiddle> clueMiddleList = new ArrayList<>();
@ -114,6 +116,9 @@ public class ClueServiceImpl implements ClueService {
for (Map<Long, List<Long>> map : maps) { for (Map<Long, List<Long>> map : maps) {
for (Long userId : map.keySet()) { for (Long userId : map.keySet()) {
List<Long> clueIdList = map.get(userId); List<Long> clueIdList = map.get(userId);
if (clueIdList.size() <= 0){
return new ResponseEntity<>(userId, HttpStatus.OK);
}
if (clueQueryCriteria.getMemberId() != null) { if (clueQueryCriteria.getMemberId() != null) {
clueMiddleRepository.updateUserIdExceptStatus(clueIdList, userId); clueMiddleRepository.updateUserIdExceptStatus(clueIdList, userId);
} else { } else {
@ -122,6 +127,7 @@ public class ClueServiceImpl implements ClueService {
} }
} }
} }
return new ResponseEntity<>(HttpStatus.OK);
} }
/** /**

Loading…
Cancel
Save