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