|
|
@ -24,8 +24,10 @@ import com.baiye.modules.distribute.service.ClueService;
|
|
|
|
import com.baiye.modules.distribute.service.DistributeTaskService;
|
|
|
|
import com.baiye.modules.distribute.service.DistributeTaskService;
|
|
|
|
import com.baiye.modules.distribute.vo.DistributeTaskVO;
|
|
|
|
import com.baiye.modules.distribute.vo.DistributeTaskVO;
|
|
|
|
import com.baiye.security.util.SecurityUtils;
|
|
|
|
import com.baiye.security.util.SecurityUtils;
|
|
|
|
|
|
|
|
import com.baiye.system.checker.AdminUserChecker;
|
|
|
|
import com.baiye.system.model.entity.SysUser;
|
|
|
|
import com.baiye.system.model.entity.SysUser;
|
|
|
|
import com.baiye.system.service.SysUserService;
|
|
|
|
import com.baiye.system.service.SysUserService;
|
|
|
|
|
|
|
|
import com.baiye.task.service.DistributeTaskSyncService;
|
|
|
|
import com.baiye.utils.AssignDataUtil;
|
|
|
|
import com.baiye.utils.AssignDataUtil;
|
|
|
|
import com.baiye.utils.DateTimeToCronUtils;
|
|
|
|
import com.baiye.utils.DateTimeToCronUtils;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
@ -55,6 +57,10 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
|
|
|
|
|
|
|
|
private final MyJobService jobService;
|
|
|
|
private final MyJobService jobService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final AdminUserChecker adminUserChecker;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final DistributeTaskSyncService distributeTaskSyncService;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
public Boolean add(DistributeTaskDTO distributeTaskDTO) {
|
|
|
|
public Boolean add(DistributeTaskDTO distributeTaskDTO) {
|
|
|
@ -275,8 +281,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
if (CollUtil.isNotEmpty(recordIdList)) {
|
|
|
|
if (CollUtil.isNotEmpty(recordIdList)) {
|
|
|
|
// 查询分配人用户信息
|
|
|
|
// 查询分配人用户信息
|
|
|
|
List<SysUser> sysUsers = sysUserService.listByUserIds(userIdList);
|
|
|
|
List<SysUser> sysUsers = sysUserService.listByUserIds(userIdList);
|
|
|
|
Map<Long, List<SysUser>> userIdMap = sysUsers.stream()
|
|
|
|
Map<Long, List<SysUser>> userIdMap = sysUsers.stream().collect(Collectors.groupingBy(SysUser::getUserId));
|
|
|
|
.collect(Collectors.groupingBy(SysUser::getUserId));
|
|
|
|
|
|
|
|
// 获取文件中未分配的资源
|
|
|
|
// 获取文件中未分配的资源
|
|
|
|
List<Long> clueIds = clueService.findUndistributedClueIds(recordIdList);
|
|
|
|
List<Long> clueIds = clueService.findUndistributedClueIds(recordIdList);
|
|
|
|
// 分配
|
|
|
|
// 分配
|
|
|
@ -293,7 +298,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
List<DistributeResponseDTO> responseDTOS = AssignDataUtil.assignData(distributeDTO);
|
|
|
|
List<DistributeResponseDTO> responseDTOS = AssignDataUtil.assignData(distributeDTO);
|
|
|
|
// 查询业务管理员用户的默认文件记录
|
|
|
|
// 查询业务管理员用户的默认文件记录
|
|
|
|
Map<Long, List<ClueRecordEntity>> map = null;
|
|
|
|
Map<Long, List<ClueRecordEntity>> map = null;
|
|
|
|
if (createBy == 1) {
|
|
|
|
if (adminUserChecker.isAdminUser(createBy)) {
|
|
|
|
List<ClueRecordEntity> recordEntities = clueRecordMapper.selectList(
|
|
|
|
List<ClueRecordEntity> recordEntities = clueRecordMapper.selectList(
|
|
|
|
new LambdaQueryWrapper<ClueRecordEntity>().in(ClueRecordEntity::getCreateBy, userIdList)
|
|
|
|
new LambdaQueryWrapper<ClueRecordEntity>().in(ClueRecordEntity::getCreateBy, userIdList)
|
|
|
|
.eq(ClueRecordEntity::getRecordType, DefaultNumberConstants.ONE_NUMBER));
|
|
|
|
.eq(ClueRecordEntity::getRecordType, DefaultNumberConstants.ONE_NUMBER));
|
|
|
@ -310,7 +315,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
ClueEntity clueEntity = new ClueEntity();
|
|
|
|
ClueEntity clueEntity = new ClueEntity();
|
|
|
|
clueEntity.setClueId(clueId);
|
|
|
|
clueEntity.setClueId(clueId);
|
|
|
|
// 业务员更新的是分配人,否则是admin给业务管理员分配(分配到默认创建的记录中)
|
|
|
|
// 业务员更新的是分配人,否则是admin给业务管理员分配(分配到默认创建的记录中)
|
|
|
|
if (createBy != 1) {
|
|
|
|
if (!adminUserChecker.isAdminUser(createBy)) {
|
|
|
|
clueEntity.setAssignedBy(assignedBy);
|
|
|
|
clueEntity.setAssignedBy(assignedBy);
|
|
|
|
if (userIdMap.containsKey(assignedBy)) {
|
|
|
|
if (userIdMap.containsKey(assignedBy)) {
|
|
|
|
SysUser sysUser = userIdMap.get(assignedBy).get(0);
|
|
|
|
SysUser sysUser = userIdMap.get(assignedBy).get(0);
|
|
|
@ -335,15 +340,16 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
// 批量修改数据
|
|
|
|
// 批量修改数据
|
|
|
|
if (CollUtil.isNotEmpty(clueEntityList)) clueService.updateBatchById(clueEntityList);
|
|
|
|
if (CollUtil.isNotEmpty(clueEntityList)) clueService.updateBatchById(clueEntityList);
|
|
|
|
// 用户分发量检测-扣减-修改
|
|
|
|
// 用户分发量检测-扣减-修改
|
|
|
|
sysUserService.detectionAvailableNumUpdate(updateUserNumMap, createBy == 1);
|
|
|
|
boolean bool = sysUserService.detectionAvailableNumUpdate(updateUserNumMap);
|
|
|
|
|
|
|
|
if (!bool) throw new BadRequestException("分发失败");
|
|
|
|
// 修改任务执行次数+1
|
|
|
|
// 修改任务执行次数+1
|
|
|
|
baseMapper.updateByExecuteNumAddOne(taskEntity.getDistributeTaskId());
|
|
|
|
baseMapper.updateByExecuteNumAddOne(taskEntity.getDistributeTaskId());
|
|
|
|
// 修改记录分配状态
|
|
|
|
// 修改记录分配状态
|
|
|
|
if (CollUtil.isNotEmpty(recordIdList)) {
|
|
|
|
if (CollUtil.isNotEmpty(recordIdList)) {
|
|
|
|
clueRecordMapper.updateAllocationStatusAndDistributeStatus(recordIdList, 1, 1);
|
|
|
|
clueRecordMapper.updateAllocationStatusAndDistributeStatus(recordIdList, 1, 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 分发下级任务
|
|
|
|
// 异步分发下级任务
|
|
|
|
if (taskEntity.getCreateBy() == 1) this.syncExecuteTask(userIdList);
|
|
|
|
if (adminUserChecker.isAdminUser(createBy)) distributeTaskSyncService.executeTask(userIdList, this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -355,8 +361,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void addDefaultTask(String taskName, String prefixName, String recordId, Long createUserId,
|
|
|
|
public void addDefaultTask(String taskName, String prefixName, String recordId, Long createUserId, Long allocationBy) {
|
|
|
|
Long allocationBy) {
|
|
|
|
|
|
|
|
// 创建默认任务
|
|
|
|
// 创建默认任务
|
|
|
|
DistributeTaskEntity taskEntity = new DistributeTaskEntity();
|
|
|
|
DistributeTaskEntity taskEntity = new DistributeTaskEntity();
|
|
|
|
taskEntity.setDistributeTaskType(1);
|
|
|
|
taskEntity.setDistributeTaskType(1);
|
|
|
@ -369,9 +374,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
taskEntity.setDefaultType(0);
|
|
|
|
taskEntity.setDefaultType(0);
|
|
|
|
taskEntity.setCreateBy(createUserId);
|
|
|
|
taskEntity.setCreateBy(createUserId);
|
|
|
|
// admin管理员创建是默认开启,业务管理员创建时由于不确定是否创建了子用户,所以无法自动开启
|
|
|
|
// admin管理员创建是默认开启,业务管理员创建时由于不确定是否创建了子用户,所以无法自动开启
|
|
|
|
if (createUserId == 1) {
|
|
|
|
if (createUserId == 1) taskEntity.setExecuteStatus(1);
|
|
|
|
taskEntity.setExecuteStatus(1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
baseMapper.insert(taskEntity);
|
|
|
|
baseMapper.insert(taskEntity);
|
|
|
|
|
|
|
|
|
|
|
|
// 任务默认当前选中用户平均分配
|
|
|
|
// 任务默认当前选中用户平均分配
|
|
|
@ -429,8 +432,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (ruleStatus == DefaultNumberConstants.ONE_NUMBER) {
|
|
|
|
if (ruleStatus == DefaultNumberConstants.ONE_NUMBER) {
|
|
|
|
int sum = userList.stream().mapToInt(DistributeTaskUserDTO::getWeight).sum();
|
|
|
|
int sum = userList.stream().mapToInt(DistributeTaskUserDTO::getWeight).sum();
|
|
|
|
if (sum != DefaultNumberConstants.TEN_NUMBER)
|
|
|
|
if (sum != DefaultNumberConstants.TEN_NUMBER) throw new BadRequestException("权重分配不符合10份制");
|
|
|
|
throw new BadRequestException("权重分配不符合10份制");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
List<Long> userIds = userList.stream().map(DistributeTaskUserDTO::getUserId).collect(Collectors.toList());
|
|
|
|
List<Long> userIds = userList.stream().map(DistributeTaskUserDTO::getUserId).collect(Collectors.toList());
|
|
|
|
String nickName = sysUserService.detectionAvailableNum(userIds);
|
|
|
|
String nickName = sysUserService.detectionAvailableNum(userIds);
|
|
|
@ -463,9 +465,7 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
.eq(DistributeTaskEntity::getDefaultType, 0)
|
|
|
|
.eq(DistributeTaskEntity::getDefaultType, 0)
|
|
|
|
.ne(DistributeTaskEntity::getExecuteStatus, 0));
|
|
|
|
.ne(DistributeTaskEntity::getExecuteStatus, 0));
|
|
|
|
if (CollUtil.isNotEmpty(taskEntities)) {
|
|
|
|
if (CollUtil.isNotEmpty(taskEntities)) {
|
|
|
|
List<Long> taskIds = taskEntities.stream()
|
|
|
|
List<Long> taskIds = taskEntities.stream().map(DistributeTaskEntity::getDistributeTaskId).collect(Collectors.toList());
|
|
|
|
.map(DistributeTaskEntity::getDistributeTaskId)
|
|
|
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
if (taskIds.size() < userIdList.size()) {
|
|
|
|
if (taskIds.size() < userIdList.size()) {
|
|
|
|
throw new BadRequestException("用户默认分发任务无分配用户,请检查用户的分配任务");
|
|
|
|
throw new BadRequestException("用户默认分发任务无分配用户,请检查用户的分配任务");
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -477,14 +477,12 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
.collect(Collectors.groupingBy(DistributeTaskUserEntity::getDistributeTaskId));
|
|
|
|
.collect(Collectors.groupingBy(DistributeTaskUserEntity::getDistributeTaskId));
|
|
|
|
for (Long taskId : taskIds) {
|
|
|
|
for (Long taskId : taskIds) {
|
|
|
|
if (!map.containsKey(taskId)) {
|
|
|
|
if (!map.containsKey(taskId)) {
|
|
|
|
Map<Long, List<DistributeTaskEntity>> listMap = taskEntities.stream()
|
|
|
|
Map<Long, List<DistributeTaskEntity>> listMap = taskEntities.stream().collect(Collectors.groupingBy(DistributeTaskEntity::getDistributeTaskId));
|
|
|
|
.collect(Collectors.groupingBy(DistributeTaskEntity::getDistributeTaskId));
|
|
|
|
|
|
|
|
Long createBy = listMap.get(taskId).get(0).getCreateBy();
|
|
|
|
Long createBy = listMap.get(taskId).get(0).getCreateBy();
|
|
|
|
SysUser sysUser = sysUserService.getById(createBy);
|
|
|
|
SysUser sysUser = sysUserService.getById(createBy);
|
|
|
|
throw new BadRequestException("用户:" + sysUser.getUsername() + " 默认分发任务中无分配人,请通知整改后操作该用户");
|
|
|
|
throw new BadRequestException("用户:" + sysUser.getUsername() + " 默认分发任务中无分配人,请通知整改后操作该用户");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
throw new BadRequestException("用户默认分发任务无分配用户,请检查用户的分配任务");
|
|
|
|
throw new BadRequestException("用户默认分发任务无分配用户,请检查用户的分配任务");
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -493,24 +491,4 @@ public class DistributeTaskServiceImpl extends ExtendServiceImpl<DistributeTaskM
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 执行下级分配
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private void syncExecuteTask(List<Long> userIdList) {
|
|
|
|
|
|
|
|
List<DistributeTaskEntity> taskEntities = baseMapper
|
|
|
|
|
|
|
|
.selectList(new LambdaQueryWrapper<DistributeTaskEntity>().eq(DistributeTaskEntity::getDefaultType, 0)
|
|
|
|
|
|
|
|
.in(DistributeTaskEntity::getCreateBy, userIdList));
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(taskEntities)) {
|
|
|
|
|
|
|
|
for (DistributeTaskEntity distributeTaskEntity : taskEntities) {
|
|
|
|
|
|
|
|
Integer executeStatus = distributeTaskEntity.getExecuteStatus();
|
|
|
|
|
|
|
|
Integer distributeTaskType = distributeTaskEntity.getDistributeTaskType();
|
|
|
|
|
|
|
|
Integer timeStatus = distributeTaskEntity.getTimeStatus();
|
|
|
|
|
|
|
|
if ((distributeTaskType == 1 && timeStatus == 0) && executeStatus != 0 && executeStatus != 3) {
|
|
|
|
|
|
|
|
this.execute(distributeTaskEntity);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|