@ -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 ) {
clue Repository. updateOrganizeIdById ( id , deptId ) ;
clue Middle Repository. updateOrganizeIdById ( id , deptId ) ;
}
}
/ * *
* 小 组 id 查 询 并 分 配 组 员 资 源
* /
@Override
@Transactional ( rollbackFor = Exception . class )
public void queryOrganizeIdList ( ClueQueryCriteria clueQueryCriteria ) {
//资源id集合
List < Long > clueIds = new ArrayList < > ( ) ;
//查询此小组下的所有资源id
List < Clue > clue List = clu eRepository. findByOrganizeId ( clueQueryCriteria . getOrganizeId ( ) ) ;
for ( Clue clue : clu eList) {
clueIds . add ( clue . get Id( ) ) ;
List < Clue Middle > clue Middle List = clu eMiddl eRepository. findByOrganizeId ( clueQueryCriteria . getOrganizeId ( ) ) ;
for ( Clue Middle clue Middle : clu eMiddl eList) {
clueIds . add ( clue Middle . get Clue Id( ) ) ;
}
//小组内资源分配
//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 ) {
clue Repository. updateUserId ( clueId , DefaultNumberConstants . ONE_NUMBER , userId ) ;
clue Middle Repository. 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 clue Repository. countByMemberId ( memberId ) ;
return clue Middle Repository. 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 ) ;
}
}